Mercurial > hg
diff tests/test-ancestor.py @ 18079:b3ba69692f8a
ancestor: move missingancestors doctest out into a separate file
This is in preparation for upcoming patches which will reuse the same graph
for tests.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Tue, 11 Dec 2012 14:47:33 -0800 |
parents | |
children | f7f8159caad3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-ancestor.py Tue Dec 11 14:47:33 2012 -0800 @@ -0,0 +1,74 @@ +from mercurial import ancestor + +# graph is a dict of child->parent adjacency lists for this graph: +# o 13 +# | +# | o 12 +# | | +# | | o 11 +# | | |\ +# | | | | o 10 +# | | | | | +# | o---+ | 9 +# | | | | | +# o | | | | 8 +# / / / / +# | | o | 7 +# | | | | +# o---+ | 6 +# / / / +# | | o 5 +# | |/ +# | o 4 +# | | +# o | 3 +# | | +# | o 2 +# |/ +# o 1 +# | +# o 0 + +graph = {0: [-1], 1: [0], 2: [1], 3: [1], 4: [2], 5: [4], 6: [4], + 7: [4], 8: [-1], 9: [6, 7], 10: [5], 11: [3, 7], 12: [9], + 13: [8]} +pfunc = graph.get + +def runmissingancestors(revs, bases): + print "%% ancestors of %s and not of %s" % (revs, bases) + print ancestor.missingancestors(revs, bases, pfunc) + +def test_missingancestors(): + # Empty revs + runmissingancestors([], [1]) + runmissingancestors([], []) + + # If bases is empty, it's the same as if it were [nullrev] + runmissingancestors([12], []) + + # Trivial case: revs == bases + runmissingancestors([0], [0]) + runmissingancestors([4, 5, 6], [6, 5, 4]) + + # With nullrev + runmissingancestors([-1], [12]) + runmissingancestors([12], [-1]) + + # 9 is a parent of 12. 7 is a parent of 9, so an ancestor of 12. 6 is an + # ancestor of 12 but not of 7. + runmissingancestors([12], [9]) + runmissingancestors([9], [12]) + runmissingancestors([12, 9], [7]) + runmissingancestors([7, 6], [12]) + + # More complex cases + runmissingancestors([10], [11, 12]) + runmissingancestors([11], [10]) + runmissingancestors([11], [10, 12]) + runmissingancestors([12], [10]) + runmissingancestors([12], [11]) + runmissingancestors([10, 11, 12], [13]) + runmissingancestors([13], [10, 11, 12]) + +if __name__ == '__main__': + test_missingancestors()