1312
1312
self.assertFindDistance(6, graph, 'g', [('i', 8)])
1315
class TestFindMergeOrder(TestGraphBase):
1317
def assertMergeOrder(self, expected, graph, tip, base_revisions):
1318
self.assertEqual(expected, graph.find_merge_order(tip, base_revisions))
1320
def test_parents(self):
1321
graph = self.make_graph(ancestry_1)
1322
self.assertMergeOrder(['rev3', 'rev2b'], graph, 'rev4',
1324
self.assertMergeOrder(['rev3', 'rev2b'], graph, 'rev4',
1327
def test_ancestors(self):
1328
graph = self.make_graph(ancestry_1)
1329
self.assertMergeOrder(['rev1', 'rev2b'], graph, 'rev4',
1331
self.assertMergeOrder(['rev1', 'rev2b'], graph, 'rev4',
1334
def test_shortcut_one_ancestor(self):
1335
# When we have enough info, we can stop searching
1336
graph = self.make_breaking_graph(ancestry_1, ['rev3', 'rev2b', 'rev4'])
1337
# Single ancestors shortcut right away
1338
self.assertMergeOrder(['rev3'], graph, 'rev4', ['rev3'])
1340
def test_shortcut_after_one_ancestor(self):
1341
graph = self.make_breaking_graph(ancestry_1, ['rev2a', 'rev2b'])
1342
self.assertMergeOrder(['rev3', 'rev1'], graph, 'rev4', ['rev1', 'rev3'])
1315
1345
class TestCachingParentsProvider(tests.TestCase):
1317
1347
def setUp(self):