⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wc.java

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    {        // clear the touched flag of all items        Iterator it = items.values().iterator();        while (it.hasNext())        {            Item item = (Item) it.next();            item.touched = false;        }        // normalize directory path        if (basePath != null && basePath.length() > 0)        {            basePath = basePath + "/";        }        else        {            basePath = "";        }        // check all returned DirEntry's        for (int i = 0; i < tested.length; i++)        {            String name = basePath + tested[i].getPath();            Item item = (Item) items.get(name);            Assert.assertNotNull("not found in working copy", item);            if (item.myContent != null)            {                Assert.assertEquals("state says file, working copy not",                        tested[i].getNodeKind(),                        item.nodeKind == -1 ? NodeKind.file : item.nodeKind);            }            else            {                Assert.assertEquals("state says dir, working copy not",                        tested[i].getNodeKind(),                        item.nodeKind == -1 ? NodeKind.dir : item.nodeKind);            }            item.touched = true;        }        // all items should have been in items, should had their touched flag        // set        it = items.values().iterator();        while (it.hasNext())        {            Item item = (Item) it.next();            if(!item.touched)            {                if(item.myPath.startsWith(basePath) &&                        !item.myPath.equals(basePath))                {                    Assert.assertFalse("not found in dir entries", recursive);                    boolean found = false;                    for(int i = 0; i < tested.length; i++)                    {                        if(tested[i].getNodeKind() == NodeKind.dir)                        {                            if(item.myPath.                                    startsWith(basePath+tested[i].getPath()))                            {                                found = true;                                break;                            }                        }                    }                    Assert.assertTrue("not found in dir entries", found);                }            }        }    }    /**     * Check the result of a SVNClient.status versus the expected state     * @param tested            the result to be tested     * @param workingCopyPath   the path of the working copy     * @throws Exception     */    void check(Status[] tested, String workingCopyPath) throws Exception    {        // clear the touched flag of all items        Iterator it = items.values().iterator();        while (it.hasNext())        {            Item item = (Item) it.next();            item.touched = false;        }        String normalizeWCPath =                workingCopyPath.replace(File.separatorChar, '/');        // check all result Staus object        for (int i = 0; i < tested.length; i++)        {            String path = tested[i].getPath();            Assert.assertTrue("status path starts not with working copy path",                    path.startsWith(normalizeWCPath));            // we calculate the relative path to the working copy root            if (path.length() > workingCopyPath.length() + 1)            {                Assert.assertEquals("missing '/' in status path",                        path.charAt(workingCopyPath.length()), '/');                path = path.substring(workingCopyPath.length() + 1);            }            else                // this is the working copy root itself                path = "";            Item item = (Item) items.get(path);            Assert.assertNotNull("status not found in working copy", item);            Assert.assertEquals("wrong text status in working copy",                    item.textStatus, tested[i].getTextStatus());            if (item.workingCopyRev != -1)                Assert.assertEquals("wrong revision number in working copy",                        item.workingCopyRev, tested[i].getRevisionNumber());            Assert.assertEquals("lock status wrong",                    item.isLocked, tested[i].isLocked());            Assert.assertEquals("switch status wrong",                    item.isSwitched, tested[i].isSwitched());            Assert.assertEquals("wrong prop status in working copy",                    item.propStatus, tested[i].getPropStatus());            if (item.myContent != null)            {                Assert.assertEquals("state says file, working copy not",                        tested[i].getNodeKind(),                        item.nodeKind == -1 ? NodeKind.file : item.nodeKind);                if (tested[i].getTextStatus() == Status.Kind.normal ||                        item.checkContent)                {                    File input = new File(workingCopyPath, item.myPath);                    Reader rd =                            new InputStreamReader(new FileInputStream(input));                    StringBuffer buffer = new StringBuffer();                    int ch;                    while ((ch = rd.read()) != -1)                    {                        buffer.append((char) ch);                    }                    rd.close();                    Assert.assertEquals("content mismatch", buffer.toString(),                            item.myContent);                }            }            else            {                Assert.assertEquals("state says dir, working copy not",                        tested[i].getNodeKind(),                        item.nodeKind == -1 ? NodeKind.dir : item.nodeKind);            }            item.touched = true;        }        // all items which have the touched flag not set, are missing in the        // result array        it = items.values().iterator();        while (it.hasNext())        {            Item item = (Item) it.next();            Assert.assertTrue("item in working copy not found in status",                    item.touched);        }    }    /**     * internal class to discribe a single working copy item     */    public class Item    {        /**         * the content of a file. A directory has a null content         */        String myContent;        /**         * the relative path of the item         */        String myPath;        /**         * the text (content) status of the item         */        int textStatus = Status.Kind.normal;        /**         * the property status of the item.         */        int propStatus = Status.Kind.none;        /**         * the expected revision number. -1 means do not check.         */        long workingCopyRev = -1;        /**         * flag if item has been touched. To detect missing items.         */        boolean touched;        /**         * flag if the content will be checked         */        boolean checkContent;        /**         * expected node kind. -1 means do not check.         */        int nodeKind = -1;        /**         * expected locked status         */        boolean isLocked;        /**         * expected switched status         */        boolean isSwitched;        /**         * create a new item         * @param path      the path of the item.         * @param content   the content of the item. A null signals a directory.         */        private Item(String path, String content)        {            myPath = path;            myContent = content;            items.put(path, this);        }        /**         * copy constructor         * @param source    the copy source.         * @param owner     the WC of the copy         */        private Item(Item source, WC owner)        {            myPath = source.myPath;            myContent = source.myContent;            textStatus = source.textStatus;            propStatus = source.propStatus;            owner.items.put(myPath, this);        }        /**         * copy this item         * @param owner the new WC         * @return  the copied item         */        private Item copy(WC owner)        {            return new Item(this, owner);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -