/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test__known_graph.py

  • Committer: John Arbash Meinel
  • Date: 2009-12-10 17:16:19 UTC
  • mfrom: (4884 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4889.
  • Revision ID: john@arbash-meinel.com-20091210171619-ehdcxjbl8afhq9g1
Bring in bzr.dev 4884

Show diffs side-by-side

added added

removed removed

Lines of Context:
99
99
 
100
100
    def test_children_ancestry1(self):
101
101
        graph = self.make_known_graph(test_graph.ancestry_1)
102
 
        self.assertEqual(['rev1'], graph._nodes[NULL_REVISION].child_keys)
 
102
        self.assertEqual(['rev1'], graph.get_child_keys(NULL_REVISION))
103
103
        self.assertEqual(['rev2a', 'rev2b'],
104
 
                         sorted(graph._nodes['rev1'].child_keys))
105
 
        self.assertEqual(['rev3'], sorted(graph._nodes['rev2a'].child_keys))
106
 
        self.assertEqual(['rev4'], sorted(graph._nodes['rev3'].child_keys))
107
 
        self.assertEqual(['rev4'], sorted(graph._nodes['rev2b'].child_keys))
 
104
                         sorted(graph.get_child_keys('rev1')))
 
105
        self.assertEqual(['rev3'], graph.get_child_keys('rev2a'))
 
106
        self.assertEqual(['rev4'], graph.get_child_keys('rev3'))
 
107
        self.assertEqual(['rev4'], graph.get_child_keys('rev2b'))
 
108
        self.assertRaises(KeyError, graph.get_child_keys, 'not_in_graph')
 
109
 
 
110
    def test_parent_ancestry1(self):
 
111
        graph = self.make_known_graph(test_graph.ancestry_1)
 
112
        self.assertEqual([NULL_REVISION], graph.get_parent_keys('rev1'))
 
113
        self.assertEqual(['rev1'], graph.get_parent_keys('rev2a'))
 
114
        self.assertEqual(['rev1'], graph.get_parent_keys('rev2b'))
 
115
        self.assertEqual(['rev2a'], graph.get_parent_keys('rev3'))
 
116
        self.assertEqual(['rev2b', 'rev3'],
 
117
                         sorted(graph.get_parent_keys('rev4')))
 
118
        self.assertRaises(KeyError, graph.get_child_keys, 'not_in_graph')
 
119
    
 
120
    def test_parent_with_ghost(self):
 
121
        graph = self.make_known_graph(test_graph.with_ghost)
 
122
        self.assertEqual(None, graph.get_parent_keys('g'))
108
123
 
109
124
    def test_gdfo_ancestry_1(self):
110
125
        graph = self.make_known_graph(test_graph.ancestry_1)
139
154
        self.assertGDFO(graph, 'a', 5)
140
155
        self.assertGDFO(graph, 'c', 5)
141
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
 
142
224
 
143
225
class TestKnownGraphHeads(TestCaseWithKnownGraph):
144
226
 
245
327
        self.assertEqual(set(['a', 'c']), graph.heads(['a', 'c', 'e', 'g']))
246
328
        self.assertEqual(set(['a', 'c']), graph.heads(['a', 'c', 'f']))
247
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
 
248
338
 
249
339
class TestKnownGraphTopoSort(TestCaseWithKnownGraph):
250
340