~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/testweave.py

  • Committer: Martin Pool
  • Date: 2005-07-23 13:59:30 UTC
  • Revision ID: mbp@sourcefrog.net-20050723135930-d81530c82c925cb0
- less dodgy is_inside function

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