~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_weave.py

  • Committer: Martin Pool
  • Date: 2009-03-24 05:21:02 UTC
  • mfrom: (4192 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4202.
  • Revision ID: mbp@sourcefrog.net-20090324052102-8kk087b32tep3d9h
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
 
18
18
# TODO: tests regarding version names
19
 
# TODO: rbc 20050108 test that join does not leave an inconsistent weave 
 
19
# TODO: rbc 20050108 test that join does not leave an inconsistent weave
20
20
#       if it fails.
21
21
 
22
22
"""test suite for weave algorithm"""
121
121
                          'text0',
122
122
                          ['basis'],         # not the right parents
123
123
                          TEXT_0)
124
 
        
 
124
 
125
125
 
126
126
class InsertLines(TestBase):
127
127
    """Store a revision that adds one line to the original.
170
170
              ['text0', 'text1', 'text3'],
171
171
              ['line 1', 'aaa', 'middle line', 'bbb', 'line 2', 'ccc'])
172
172
 
173
 
        self.assertEqual(k.annotate('text4'), 
 
173
        self.assertEqual(k.annotate('text4'),
174
174
                         [('text0', 'line 1'),
175
175
                          ('text4', 'aaa'),
176
176
                          ('text3', 'middle line'),
189
189
        base_text = ['one', 'two', 'three', 'four']
190
190
 
191
191
        k.add_lines('text0', [], base_text)
192
 
        
 
192
 
193
193
        texts = [['one', 'two', 'three'],
194
194
                 ['two', 'three', 'four'],
195
195
                 ['one', 'four'],
226
226
                ]
227
227
        ################################### SKIPPED
228
228
        # Weave.get doesn't trap this anymore
229
 
        return 
 
229
        return
230
230
 
231
231
        self.assertRaises(WeaveFormatError,
232
232
                          k.get_lines,
233
 
                          0)        
 
233
                          0)
234
234
 
235
235
 
236
236
class CannedDelete(TestBase):
278
278
                'line to be deleted',
279
279
                (']', 1),
280
280
                ('{', 1),
281
 
                'replacement line',                
 
281
                'replacement line',
282
282
                ('}', 1),
283
283
                'last line',
284
284
                ('}', 0),
321
321
 
322
322
        ################################### SKIPPED
323
323
        # Weave.get doesn't trap this anymore
324
 
        return 
 
324
        return
325
325
 
326
326
 
327
327
        self.assertRaises(WeaveFormatError,
399
399
                          '  added in version 1',
400
400
                          '  also from v1',
401
401
                          '}'])
402
 
                       
 
402
 
403
403
        self.assertEqual(k.get_lines(2),
404
404
                         ['foo {',
405
405
                          '  added in v2',
411
411
                          '  added in v2',
412
412
                          '  also from v1',
413
413
                          '}'])
414
 
                         
 
414
 
415
415
 
416
416
class DeleteLines2(TestBase):
417
417
    """Test recording revisions that delete lines.
493
493
                ('}', 1),
494
494
                ('{', 2),
495
495
                "alternative second line",
496
 
                ('}', 2),                
 
496
                ('}', 2),
497
497
                ]
498
498
 
499
499
        k._sha1s = [sha_string('first line')
521
521
 
522
522
        text0 = ['cheddar', 'stilton', 'gruyere']
523
523
        text1 = ['cheddar', 'blue vein', 'neufchatel', 'chevre']
524
 
        
 
524
 
525
525
        k.add_lines('text0', [], text0)
526
526
        k.add_lines('text1', ['text0'], text1)
527
527
 
609
609
            A Jug of Wine, a Loaf of Bread, -- and Thou
610
610
            Beside me singing in the Wilderness --
611
611
            Oh, Wilderness were Paradise enow!""",
612
 
            
 
612
 
613
613
            """A Book of Verses underneath the Bough,
614
614
            A Jug of Wine, a Loaf of Bread, -- and Thou
615
615
            Beside me singing in the Wilderness --
707
707
        self.assertRaises(errors.WeaveInvalidChecksum, w.check)
708
708
 
709
709
 
 
710
class TestWeave(TestCase):
 
711
 
 
712
    def test_allow_reserved_false(self):
 
713
        w = Weave('name', allow_reserved=False)
 
714
        # Add lines is checked at the WeaveFile level, not at the Weave level
 
715
        w.add_lines('name:', [], TEXT_1)
 
716
        # But get_lines is checked at this level
 
717
        self.assertRaises(errors.ReservedId, w.get_lines, 'name:')
 
718
 
 
719
    def test_allow_reserved_true(self):
 
720
        w = Weave('name', allow_reserved=True)
 
721
        w.add_lines('name:', [], TEXT_1)
 
722
        self.assertEqual(TEXT_1, w.get_lines('name:'))
 
723
 
 
724
 
710
725
class InstrumentedWeave(Weave):
711
726
    """Keep track of how many times functions are called."""
712
 
    
 
727
 
713
728
    def __init__(self, weave_name=None):
714
729
        self._extract_count = 0
715
730
        Weave.__init__(self, weave_name=weave_name)
738
753
 
739
754
 
740
755
class TestWeaveFile(TestCaseInTempDir):
741
 
    
 
756
 
742
757
    def test_empty_file(self):
743
758
        f = open('empty.weave', 'wb+')
744
759
        try: