~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/testweave.py

  • Committer: Martin Pool
  • Date: 2005-08-18 07:51:58 UTC
  • Revision ID: mbp@sourcefrog.net-20050818075157-5f69075fa843d558
- add space to store revision-id in weave files

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
18
 
19
19
 
 
20
# TODO: tests regarding version names
 
21
 
20
22
 
21
23
 
22
24
"""test suite for weave algorithm"""
60
62
            tf.seek(0)
61
63
            self.log('serialized weave:')
62
64
            self.log(tf.read())
 
65
 
 
66
            self.log('')
 
67
            self.log('parents: %s' % (k._parents == k2._parents))
 
68
            self.log('         %r' % k._parents)
 
69
            self.log('         %r' % k2._parents)
 
70
            self.log('')
 
71
 
 
72
            
63
73
            self.fail('read/write check failed')
64
74
        
65
75
        
74
84
    """Store and retrieve a simple text."""
75
85
    def runTest(self):
76
86
        k = Weave()
77
 
        idx = k.add([], TEXT_0)
 
87
        idx = k.add('text0', [], TEXT_0)
78
88
        self.assertEqual(k.get(idx), TEXT_0)
79
89
        self.assertEqual(idx, 0)
80
90
 
83
93
class AnnotateOne(TestBase):
84
94
    def runTest(self):
85
95
        k = Weave()
86
 
        k.add([], TEXT_0)
 
96
        k.add('text0', [], TEXT_0)
87
97
        self.assertEqual(k.annotate(0),
88
98
                         [(0, TEXT_0[0])])
89
99
 
92
102
    def runTest(self):
93
103
        k = Weave()
94
104
 
95
 
        idx = k.add([], TEXT_0)
 
105
        idx = k.add('text0', [], TEXT_0)
96
106
        self.assertEqual(idx, 0)
97
107
 
98
 
        idx = k.add([], TEXT_1)
 
108
        idx = k.add('text1', [], TEXT_1)
99
109
        self.assertEqual(idx, 1)
100
110
 
101
111
        self.assertEqual(k.get(0), TEXT_0)
112
122
 
113
123
        self.assertRaises(IndexError,
114
124
                          k.add,
 
125
                          'text0',
115
126
                          [69],
116
127
                          ['new text!'])
117
128
 
124
135
    def runTest(self):
125
136
        k = Weave()
126
137
 
127
 
        k.add([], ['line 1'])
128
 
        k.add([0], ['line 1', 'line 2'])
 
138
        k.add('text0', [], ['line 1'])
 
139
        k.add('text1', [0], ['line 1', 'line 2'])
129
140
 
130
141
        self.assertEqual(k.annotate(0),
131
142
                         [(0, 'line 1')])
138
149
                         [(0, 'line 1'),
139
150
                          (1, 'line 2')])
140
151
 
141
 
        k.add([0], ['line 1', 'diverged line'])
 
152
        k.add('text2', [0], ['line 1', 'diverged line'])
142
153
 
143
154
        self.assertEqual(k.annotate(2),
144
155
                         [(0, 'line 1'),
145
156
                          (2, 'diverged line')])
146
157
 
147
158
        text3 = ['line 1', 'middle line', 'line 2']
148
 
        k.add([0, 1],
 
159
        k.add('text3',
 
160
              [0, 1],
149
161
              text3)
150
162
 
151
163
        # self.log("changes to text3: " + pformat(list(k._delta(set([0, 1]), text3))))
158
170
                          (1, 'line 2')])
159
171
 
160
172
        # now multiple insertions at different places
161
 
        k.add([0, 1, 3],
 
173
        k.add('text4',
 
174
              [0, 1, 3],
162
175
              ['line 1', 'aaa', 'middle line', 'bbb', 'line 2', 'ccc'])
163
176
 
164
177
        self.assertEqual(k.annotate(4), 
180
193
 
181
194
        base_text = ['one', 'two', 'three', 'four']
182
195
 
183
 
        k.add([], base_text)
 
196
        k.add('text0', [], base_text)
184
197
        
185
198
        texts = [['one', 'two', 'three'],
186
199
                 ['two', 'three', 'four'],
188
201
                 ['one', 'two', 'three', 'four'],
189
202
                 ]
190
203
 
 
204
        i = 1
191
205
        for t in texts:
192
 
            ver = k.add([0], t)
 
206
            ver = k.add('text%d' % i,
 
207
                        [0], t)
 
208
            i += 1
193
209
 
194
210
        self.log('final weave:')
195
211
        self.log('k._weave=' + pformat(k._weave))
406
422
    def runTest(self):
407
423
        k = Weave()
408
424
 
409
 
        k.add([], ["line the first",
 
425
        k.add('text0', [], ["line the first",
410
426
                   "line 2",
411
427
                   "line 3",
412
428
                   "fine"])
413
429
 
414
430
        self.assertEqual(len(k.get(0)), 4)
415
431
 
416
 
        k.add([0], ["line the first",
 
432
        k.add('text1', [0], ["line the first",
417
433
                   "fine"])
418
434
 
419
435
        self.assertEqual(k.get(1),
501
517
        text0 = ['cheddar', 'stilton', 'gruyere']
502
518
        text1 = ['cheddar', 'blue vein', 'neufchatel', 'chevre']
503
519
        
504
 
        k.add([], text0)
505
 
        k.add([0], text1)
 
520
        k.add('text0', [], text0)
 
521
        k.add('text1', [0], text1)
506
522
 
507
523
        self.log('k._weave=' + pformat(k._weave))
508
524
 
522
538
                 ['header', '', 'line from 1', 'fixup line', 'line from 2'],
523
539
                 ]
524
540
 
525
 
        k.add([], texts[0])
526
 
        k.add([0], texts[1])
527
 
        k.add([0], texts[2])
528
 
        k.add([0, 1, 2], texts[3])
 
541
        k.add('text0', [], texts[0])
 
542
        k.add('text1', [0], texts[1])
 
543
        k.add('text2', [0], texts[2])
 
544
        k.add('merge', [0, 1, 2], texts[3])
529
545
 
530
546
        for i, t in enumerate(texts):
531
547
            self.assertEqual(k.get(i), t)
593
609
                 ['header', 'aaa', 'bbb', 'line from 2', 'more from 2'],
594
610
                 ]
595
611
 
596
 
        k.add([], texts[0])
597
 
        k.add([0], texts[1])
598
 
        k.add([0], texts[2])
 
612
        k.add('text0', [], texts[0])
 
613
        k.add('text1', [0], texts[1])
 
614
        k.add('text2', [0], texts[2])
599
615
 
600
616
        self.log('k._weave=' + pformat(k._weave))
601
617
 
641
657
 
642
658
        k = Weave()
643
659
        parents = set()
 
660
        i = 0
644
661
        for t in texts:
645
 
            ver = k.add(list(parents), t)
 
662
            ver = k.add('text%d' % i,
 
663
                        list(parents), t)
646
664
            parents.add(ver)
 
665
            i += 1
647
666
 
648
667
        self.log("k._weave=" + pformat(k._weave))
649
668
 
663
682
            return x + '\n'
664
683
        
665
684
        w = Weave()
666
 
        w.add([], map(addcrlf, base))
667
 
        w.add([0], map(addcrlf, a))
668
 
        w.add([0], map(addcrlf, b))
 
685
        w.add('text0', [], map(addcrlf, base))
 
686
        w.add('text1', [0], map(addcrlf, a))
 
687
        w.add('text2', [0], map(addcrlf, b))
669
688
 
670
689
        self.log('weave is:')
671
690
        tmpf = StringIO()