245
245
self._real_parents_provider = parents_provider
247
def get_parents(self, nodes):
248
self.calls.extend(nodes)
249
return self._real_parents_provider.get_parents(nodes)
251
247
def get_parent_map(self, nodes):
252
248
self.calls.extend(nodes)
253
249
return self._real_parents_provider.get_parent_map(nodes)
450
446
self.assertEqual((set(['e']), set(['f', 'g'])),
451
447
graph.find_difference('e', 'f'))
453
def test_stacked_parents_provider_get_parents(self):
454
parents1 = _mod_graph.DictParentsProvider({'rev2': ['rev3']})
455
parents2 = _mod_graph.DictParentsProvider({'rev1': ['rev4']})
456
stacked = _mod_graph._StackedParentsProvider([parents1, parents2])
457
self.assertEqual([['rev4',], ['rev3']],
458
self.applyDeprecated(symbol_versioning.one_one,
459
stacked.get_parents, ['rev1', 'rev2']))
460
self.assertEqual([['rev3',], ['rev4']],
461
self.applyDeprecated(symbol_versioning.one_one,
462
stacked.get_parents, ['rev2', 'rev1']))
463
self.assertEqual([['rev3',], ['rev3']],
464
self.applyDeprecated(symbol_versioning.one_one,
465
stacked.get_parents, ['rev2', 'rev2']))
466
self.assertEqual([['rev4',], ['rev4']],
467
self.applyDeprecated(symbol_versioning.one_one,
468
stacked.get_parents, ['rev1', 'rev1']))
470
449
def test_stacked_parents_provider(self):
471
450
parents1 = _mod_graph.DictParentsProvider({'rev2': ['rev3']})
472
451
parents2 = _mod_graph.DictParentsProvider({'rev1': ['rev4']})
641
613
result[key] = graph_dict[key]
644
an_obj.get_parents = get_parents
645
616
an_obj.get_parent_map = get_parent_map
646
617
graph = _mod_graph.Graph(an_obj)
647
618
return graph.heads(search)
690
661
self.inst_pp = InstrumentedParentsProvider(dict_pp)
691
662
self.caching_pp = _mod_graph.CachingParentsProvider(self.inst_pp)
693
def test_get_parents(self):
694
"""Requesting the same revision should be returned from cache"""
695
self.assertEqual({}, self.caching_pp._cache)
696
self.assertEqual([('b',)],
697
self.applyDeprecated(symbol_versioning.one_one,
698
self.caching_pp.get_parents, ['a']))
699
self.assertEqual(['a'], self.inst_pp.calls)
700
self.assertEqual([('b',)],
701
self.applyDeprecated(symbol_versioning.one_one,
702
self.caching_pp.get_parents, ['a']))
703
# No new call, as it should have been returned from the cache
704
self.assertEqual(['a'], self.inst_pp.calls)
705
self.assertEqual({'a':('b',)}, self.caching_pp._cache)
707
664
def test_get_parent_map(self):
708
665
"""Requesting the same revision should be returned from cache"""
709
666
self.assertEqual({}, self.caching_pp._cache)