### Question:
BasicWithExclusionsDescendantFileSource implements DescendantFileSource { public String getRootDirectoryPath() { return this.root.getRootDirectoryPath(); } BasicWithExclusionsDescendantFileSource(String rootDirectoryPath, List<String> exclusions);  BasicWithExclusionsDescendantFileSource(File rootDirectory, List<String> exclusions); File getFile(String path); DescendantFileSource getDescendant(String relativePath); File getRootDirectory(); String getRootDirectoryPath(); boolean isDescendant(File file); boolean isDescendant(String filePath); String getRelativePath(File file); String getRelativePath(String filePath); @Override String toString();  }### Answer:
@Test public void testNormalizedPath() { List<String> exclusions = Collections.singletonList("dir2"); DescendantFileSource bfl = new BasicWithExclusionsDescendantFileSource(tmpDir, exclusions); assertEquals("Root directory path not clean.", StringUtils.cleanPath(bfl.getRootDirectoryPath()), bfl.getRootDirectoryPath()); File tmp2 = new File(tmpDir, "./dir1/./dir1_2/../dir1_2/../../dir1"); exclusions = Collections.singletonList("dir1_2"); bfl = new BasicWithExclusionsDescendantFileSource(tmp2, exclusions); assertEquals("Root directory path not clean.", StringUtils.cleanPath(bfl.getRootDirectoryPath()), bfl.getRootDirectoryPath()); }