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> {
|
public static class TreeNode<T> {
|
||||||
TreeNode parent
|
TreeNode parent
|
||||||
File file
|
File file
|
||||||
|
|
|
@ -134,4 +134,32 @@ class FileTreeTest {
|
||||||
assert values.size() == 1
|
assert values.size() == 1
|
||||||
assert values.contains("c")
|
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