mirror of https://github.com/zlatinb/muwire
add common ancestor method to FileTree
parent
b9b6d760e0
commit
67501a7d73
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue