~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to testweave.py

  • Committer: Martin Pool
  • Date: 2005-06-28 14:10:14 UTC
  • mto: This revision was merged to the branch mainline in revision 852.
  • Revision ID: mbp@sourcefrog.net-20050628141014-01deff4d9219ee74
Fix bug in an update edit that both deletes and inserts -- previously
the insert was clobbered by our own delete.

Add some tests that do such updates.

Clean up imports of pformat.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
 
25
25
from testsweet import TestBase
26
26
from weave import Weave, VerInfo, WeaveFormatError
 
27
from pprint import pformat
27
28
 
28
29
# XXX: If we do weaves this way, will a merge still behave the same
29
30
# way if it's done in a different order?  That's a pretty desirable
79
80
class DeltaAdd(TestBase):
80
81
    """Detection of changes prior to inserting new revision."""
81
82
    def runTest(self):
82
 
        from pprint import pformat
83
 
 
84
83
        k = Weave()
85
84
        k.add([], ['line 1'])
86
85
 
152
151
        k.add([0, 1],
153
152
              text3)
154
153
 
155
 
        from pprint import pformat
156
 
 
157
154
        self.log("changes to text3: " + pformat(list(k._delta(set([0, 1]), text3))))
158
155
 
159
156
        self.log("k._l=" + pformat(k._l))
197
194
        for t in texts:
198
195
            ver = k.add([0], t)
199
196
 
200
 
        from pprint import pformat
201
197
        self.log('final weave:')
202
198
        self.log('k._l=' + pformat(k._l))
203
199
 
484
480
                         ["first line",
485
481
                          "alternative second line"])
486
482
 
 
483
 
 
484
 
 
485
class ReplaceLine(TestBase):
 
486
    def runTest(self):
 
487
        k = Weave()
 
488
 
 
489
        text0 = ['cheddar', 'stilton', 'gruyere']
 
490
        text1 = ['cheddar', 'blue vein', 'neufchatel', 'chevre']
 
491
        
 
492
        k.add([], text0)
 
493
        k.add([0], text1)
 
494
 
 
495
        self.log('k._l=' + pformat(k._l))
 
496
 
 
497
        self.assertEqual(k.get(1), text1)
 
498
 
 
499
        
 
500
 
 
501
 
 
502
class Khayyam(TestBase):
 
503
    def runTest(self):
 
504
        rawtexts = [
 
505
            """A Book of Verses underneath the Bough,
 
506
            A Jug of Wine, a Loaf of Bread, -- and Thou
 
507
            Beside me singing in the Wilderness --
 
508
            Oh, Wilderness were Paradise enow!""",
 
509
            
 
510
            """A Book of Verses underneath the Bough,
 
511
            A Jug of Wine, a Loaf of Bread, -- and Thou
 
512
            Beside me singing in the Wilderness --
 
513
            Oh, Wilderness were Paradise now!""",
 
514
            ]
 
515
        texts = [[l.strip() for l in t.split('\n')] for t in rawtexts]
 
516
 
 
517
        k = Weave()
 
518
        parents = set()
 
519
        for t in texts:
 
520
            ver = k.add(parents, t)
 
521
            parents.add(ver)
 
522
 
 
523
        for i, t in enumerate(texts):
 
524
            self.assertEqual(k.get(i),
 
525
                             t)            
 
526
 
 
527
 
 
528
 
487
529
def testweave():
488
530
    import testsweet
489
531
    from unittest import TestSuite, TestLoader
490
532
    import testweave
491
 
 
 
533
 
492
534
    tl = TestLoader()
493
535
    suite = TestSuite()
494
536
    suite.addTest(tl.loadTestsFromModule(testweave))