add common ancestor method to FileTree

pull/53/head
Zlatin Balevsky 2020-10-30 16:29:19 +00:00
parent b9b6d760e0
commit 67501a7d73
No known key found for this signature in database
GPG Key ID: A72832072D525E41
2 changed files with 35 additions and 0 deletions

View File

@ -96,6 +96,13 @@ class FileTree<T> {
}
}
synchronized File commonAncestor() {
TreeNode current = root
while(current.children.size() == 1)
current = current.children.first()
current.file
}
public static class TreeNode<T> {
TreeNode parent
File file

View File

@ -134,4 +134,32 @@ class FileTreeTest {
assert values.size() == 1
assert values.contains("c")
}
@Test
public void testCommonAncestor() {
File a = new File("a")
File b = new File(a,"b")
File c = new File(b,"c")
File d = new File(b,"d")
a.delete()
b.delete()
c.delete()
d.delete()
a.mkdir()
b.mkdir()
c.createNewFile()
d.createNewFile()
FileTree<Void> tree = new FileTree<>()
tree.add(a, null)
tree.add(b, null)
tree.add(c, null)
tree.add(d, null)
File common = tree.commonAncestor()
assert common == b
}
}