~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test__known_graph.py

merge shell-like-tests into description resolving conflicts

Show diffs side-by-side

added added

removed removed

Lines of Context:
154
154
        self.assertGDFO(graph, 'a', 5)
155
155
        self.assertGDFO(graph, 'c', 5)
156
156
 
 
157
    def test_add_existing_node(self):
 
158
        graph = self.make_known_graph(test_graph.ancestry_1)
 
159
        # Add a node that already exists with identical content
 
160
        # This is a 'no-op'
 
161
        self.assertGDFO(graph, 'rev4', 5)
 
162
        graph.add_node('rev4', ['rev3', 'rev2b'])
 
163
        self.assertGDFO(graph, 'rev4', 5)
 
164
        # This also works if we use a tuple rather than a list
 
165
        graph.add_node('rev4', ('rev3', 'rev2b'))
 
166
 
 
167
    def test_add_existing_node_mismatched_parents(self):
 
168
        graph = self.make_known_graph(test_graph.ancestry_1)
 
169
        self.assertRaises(ValueError, graph.add_node, 'rev4',
 
170
                          ['rev2b', 'rev3'])
 
171
 
 
172
    def test_add_node_with_ghost_parent(self):
 
173
        graph = self.make_known_graph(test_graph.ancestry_1)
 
174
        graph.add_node('rev5', ['rev2b', 'revGhost'])
 
175
        self.assertGDFO(graph, 'rev5', 4)
 
176
        self.assertGDFO(graph, 'revGhost', 1)
 
177
 
 
178
    def test_add_new_root(self):
 
179
        graph = self.make_known_graph(test_graph.ancestry_1)
 
180
        graph.add_node('rev5', [])
 
181
        self.assertGDFO(graph, 'rev5', 1)
 
182
 
 
183
    def test_add_with_all_ghost_parents(self):
 
184
        graph = self.make_known_graph(test_graph.ancestry_1)
 
185
        graph.add_node('rev5', ['ghost'])
 
186
        self.assertGDFO(graph, 'rev5', 2)
 
187
        self.assertGDFO(graph, 'ghost', 1)
 
188
 
 
189
    def test_gdfo_after_add_node(self):
 
190
        graph = self.make_known_graph(test_graph.ancestry_1)
 
191
        self.assertEqual([], graph.get_child_keys('rev4'))
 
192
        graph.add_node('rev5', ['rev4'])
 
193
        self.assertEqual(['rev4'], graph.get_parent_keys('rev5'))
 
194
        self.assertEqual(['rev5'], graph.get_child_keys('rev4'))
 
195
        self.assertEqual([], graph.get_child_keys('rev5'))
 
196
        self.assertGDFO(graph, 'rev5', 6)
 
197
        graph.add_node('rev6', ['rev2b'])
 
198
        graph.add_node('rev7', ['rev6'])
 
199
        graph.add_node('rev8', ['rev7', 'rev5'])
 
200
        self.assertGDFO(graph, 'rev5', 6)
 
201
        self.assertGDFO(graph, 'rev6', 4)
 
202
        self.assertGDFO(graph, 'rev7', 5)
 
203
        self.assertGDFO(graph, 'rev8', 7)
 
204
 
 
205
    def test_fill_in_ghost(self):
 
206
        graph = self.make_known_graph(test_graph.with_ghost)
 
207
        # Add in a couple nodes and then fill in the 'ghost' so that it should
 
208
        # cause renumbering of children nodes
 
209
        graph.add_node('x', [])
 
210
        graph.add_node('y', ['x'])
 
211
        graph.add_node('z', ['y'])
 
212
        graph.add_node('g', ['z'])
 
213
        self.assertGDFO(graph, 'f', 2)
 
214
        self.assertGDFO(graph, 'e', 3)
 
215
        self.assertGDFO(graph, 'x', 1)
 
216
        self.assertGDFO(graph, 'y', 2)
 
217
        self.assertGDFO(graph, 'z', 3)
 
218
        self.assertGDFO(graph, 'g', 4)
 
219
        self.assertGDFO(graph, 'b', 4)
 
220
        self.assertGDFO(graph, 'd', 5)
 
221
        self.assertGDFO(graph, 'a', 5)
 
222
        self.assertGDFO(graph, 'c', 6)
 
223
 
157
224
 
158
225
class TestKnownGraphHeads(TestCaseWithKnownGraph):
159
226
 
260
327
        self.assertEqual(set(['a', 'c']), graph.heads(['a', 'c', 'e', 'g']))
261
328
        self.assertEqual(set(['a', 'c']), graph.heads(['a', 'c', 'f']))
262
329
 
 
330
    def test_filling_in_ghosts_resets_head_cache(self):
 
331
        graph = self.make_known_graph(test_graph.with_ghost)
 
332
        self.assertEqual(set(['e', 'g']), graph.heads(['e', 'g']))
 
333
        # 'g' is filled in, and decends from 'e', so the heads result is now
 
334
        # different
 
335
        graph.add_node('g', ['e'])
 
336
        self.assertEqual(set(['g']), graph.heads(['e', 'g']))
 
337
 
263
338
 
264
339
class TestKnownGraphTopoSort(TestCaseWithKnownGraph):
265
340