test-ancestor.py
106 lines
| 2.7 KiB
| text/x-python
|
PythonLexer
/ tests / test-ancestor.py
Siddharth Agarwal
|
r18079 | 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 | ||||
Siddharth Agarwal
|
r18091 | class mockchangelog(object): | ||
parentrevs = graph.get | ||||
Siddharth Agarwal
|
r18079 | 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]) | ||||
Siddharth Agarwal
|
r18091 | def genlazyancestors(revs, stoprev=0, inclusive=False): | ||
print ("%% lazy ancestor set for %s, stoprev = %s, inclusive = %s" % | ||||
(revs, stoprev, inclusive)) | ||||
return ancestor.lazyancestors(mockchangelog, revs, stoprev=stoprev, | ||||
inclusive=inclusive) | ||||
def printlazyancestors(s, l): | ||||
print [n for n in l if n in s] | ||||
def test_lazyancestors(): | ||||
# Empty revs | ||||
s = genlazyancestors([]) | ||||
printlazyancestors(s, [3, 0, -1]) | ||||
# Standard example | ||||
s = genlazyancestors([11, 13]) | ||||
printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0]) | ||||
# Including revs | ||||
s = genlazyancestors([11, 13], inclusive=True) | ||||
printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0]) | ||||
# Test with stoprev | ||||
s = genlazyancestors([11, 13], stoprev=6) | ||||
printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0]) | ||||
s = genlazyancestors([11, 13], stoprev=6, inclusive=True) | ||||
printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0]) | ||||
Siddharth Agarwal
|
r18079 | if __name__ == '__main__': | ||
test_missingancestors() | ||||
Siddharth Agarwal
|
r18091 | test_lazyancestors() | ||