}, true, true, true, false);
}, true, true, true, false, false);
    public void testStatus() throws Throwable {        File dst = AllTests.createPlayground();        ISVNWorkspace checkoutWorkspace = createWorkspace(dst);                long revision = checkoutWorkspace.checkout(SVNRepositoryLocation.parseURL(getRepositoryURL()), ISVNWorkspace.HEAD, false);        assertEquals(revision, 1);                ISVNStatusHandler handler = new ISVNStatusHandler() {            public void handleStatus(String path, SVNStatus status) {                assertNotNull(path);                assertNotNull(status);                assertEquals(path, status.getPath());            }          };                modifyFile(new File(dst, "directory/testFile2.txt"), "modified");        createFile(new File(dst, "newFile.txt"), "added");        checkoutWorkspace.setPropertyValue("directory", "name", "value");                long head = checkoutWorkspace.status("", false, handler, true, false, false);        head = checkoutWorkspace.status("", true, handler, true, false, false);                head = checkoutWorkspace.status("directory", true, handler, true, false, false);        head = checkoutWorkspace.status("directory", true, handler, false, false, false);        head = checkoutWorkspace.status("testFile.txt", true, handler, false, false, false);        head = checkoutWorkspace.status("directory/testFile2.txt", true, handler, true, false, false);        SVNStatus status = checkoutWorkspace.status("directory/testFile2.txt", false);        assertNotNull(status);        assertEquals(status.getContentsStatus(), SVNStatus.MODIFIED);        assertEquals(status.getPropertiesStatus(), SVNStatus.NOT_MODIFIED);                status = checkoutWorkspace.status("newFile.txt", true);        assertNotNull(status);        assertEquals(status.getContentsStatus(), SVNStatus.UNVERSIONED);        assertEquals(status.getPropertiesStatus(), SVNStatus.NOT_MODIFIED);                checkoutWorkspace.add("newFile.txt", false, true);        checkoutWorkspace.delete("directory/testFile2.txt", true);        status = checkoutWorkspace.status("directory/testFile2.txt", true);        assertNotNull(status);        assertEquals(status.getContentsStatus(), SVNStatus.DELETED);        assertEquals(status.getPropertiesStatus(), SVNStatus.NOT_MODIFIED);        assertTrue(!new File(dst, "directory/testFile2.txt").exists());                status = checkoutWorkspace.status("newFile.txt", true);        assertNotNull(status);        assertEquals(status.getContentsStatus(), SVNStatus.ADDED);        assertEquals(status.getPropertiesStatus(), SVNStatus.NOT_MODIFIED);                assertEquals(head, 1);                checkoutWorkspace.add("folder", true, true);        checkoutWorkspace.commit("folder", "folder added", true);                // switch!        AllTests.runSVNCommand("switch", new String[] {getRepositoryURL() + "/directory", new File(dst, "folder").getAbsolutePath()});        // check status        final SVNStatus[] folder = new SVNStatus[1];        revision = checkoutWorkspace.status("", true, new ISVNStatusHandler() {            public void handleStatus(String path, SVNStatus st) {                if ("folder".equals(path)) {                    folder[0] = st;                }            }        },  false, false, false);        assertEquals(revision, 2);        assertNotNull(folder[0]);        assertTrue(folder[0].isSwitched());        assertTrue(folder[0].isDirectory());                modifyFile(new File(dst, "testFile.txt"), "change in switch");        modifyFile(new File(dst, "folder/testFile2.txt"), "change in switch");        DebugLog.log("COMPLEX COMMIT");        checkoutWorkspace.commit(new String[] {"folder/testFile2.txt", "testFile.txt"}, "change in switch", false, true);        DebugLog.log("DONE");                revision = checkoutWorkspace.update(ISVNWorkspace.HEAD);                assertEquals(3, revision);                checkoutWorkspace.revert("directory", true);        revision = checkoutWorkspace.update(ISVNWorkspace.HEAD);        assertEquals(3, revision);                assertEquals(new File(dst, "folder"), new File(dst, "directory"), false);                // try to revert unmodified file and folder        status = checkoutWorkspace.status("testFile.txt", false);        assertTrue(status.getContentsStatus() == status.getPropertiesStatus() && status.getContentsStatus() == SVNStatus.NOT_MODIFIED);        checkoutWorkspace.revert("testFile.txt", false);        checkoutWorkspace.revert("directory", true);        status = checkoutWorkspace.status("testFile.txt", false);        assertTrue(status.getContentsStatus() == SVNStatus.NOT_MODIFIED);        assertTrue(status.getPropertiesStatus() == SVNStatus.NOT_MODIFIED);        status = checkoutWorkspace.status("directory", false);        assertTrue(status.getContentsStatus() == SVNStatus.NOT_MODIFIED);        assertTrue(status.getPropertiesStatus() == SVNStatus.NOT_MODIFIED);                // modify directory and revert.        assertTrue(status.getPropertiesStatus() == SVNStatus.NOT_MODIFIED);        checkoutWorkspace.setPropertyValue("directory", "p", "v\nv");        status = checkoutWorkspace.status("directory", false);        assertTrue(status.getContentsStatus() == SVNStatus.NOT_MODIFIED);        assertTrue(status.getPropertiesStatus() == SVNStatus.MODIFIED);        assertTrue(checkoutWorkspace.getProperties("directory", true, false).size() == 1);        checkoutWorkspace.revert("directory", true);                status = checkoutWorkspace.status("directory", false);        assertTrue(status.getContentsStatus() == SVNStatus.NOT_MODIFIED);        assertTrue(status.getPropertiesStatus() == SVNStatus.NOT_MODIFIED);               assertTrue(checkoutWorkspace.getProperties("directory", true, false).isEmpty());                // modify file and revert        status = checkoutWorkspace.status("testFile.txt", false);        assertTrue(status.getPropertiesStatus() == SVNStatus.NOT_MODIFIED);        assertTrue(status.getContentsStatus() == SVNStatus.NOT_MODIFIED);        modifyFile(new File(dst, "testFile.txt"), "xxx");        status = checkoutWorkspace.status("testFile.txt", false);        assertTrue(status.getPropertiesStatus() == SVNStatus.NOT_MODIFIED);        assertTrue(status.getContentsStatus() == SVNStatus.MODIFIED);        checkoutWorkspace.revert("testFile.txt", false);        status = checkoutWorkspace.status("testFile.txt", false);        assertTrue(status.getContentsStatus() == SVNStatus.NOT_MODIFIED);        assertTrue(status.getPropertiesStatus() == SVNStatus.NOT_MODIFIED);                // test descending in unversioned.        checkoutWorkspace.update(ISVNWorkspace.HEAD);        File dir = new File(dst, "directory/unversioned/test");        dir.mkdirs();        createFile(new File(dir,"unversioned.txt"), "contents");        //        final Collection entries = new HashSet();        checkoutWorkspace.status("", false, new ISVNStatusHandler() {          public void handleStatus(String path, SVNStatus st) {              entries.add(path);          }          }, true, true, true, true);        assertTrue(entries.contains("directory"));        assertTrue(entries.contains("directory/unversioned"));        assertTrue(entries.contains("directory/unversioned/test"));        assertTrue(entries.contains("directory/unversioned/test/unversioned.txt"));        entries.clear();        checkoutWorkspace.status("", false, new ISVNStatusHandler() {            public void handleStatus(String path, SVNStatus st) {                entries.add(path);            }            }, true, true, true, false);        assertTrue(entries.contains("directory"));        assertTrue(entries.contains("directory/unversioned"));        assertFalse(entries.contains("directory/unversioned/test"));        assertFalse(entries.contains("directory/unversioned/test/unversioned.txt"));    }