~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_weave.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-08-17 13:49:05 UTC
  • mfrom: (1711.2.129 jam-integration)
  • Revision ID: pqm@pqm.ubuntu.com-20060817134905-0dec610d2fcd6663
(bialix) 'make html-docs' produces html documentation

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 Canonical Ltd
 
1
#! /usr/bin/python2.4
 
2
 
 
3
# Copyright (C) 2005 by Canonical Ltd
2
4
#
3
5
# This program is free software; you can redistribute it and/or modify
4
6
# it under the terms of the GNU General Public License as published by
23
25
 
24
26
from pprint import pformat
25
27
 
26
 
from bzrlib import (
27
 
    errors,
28
 
    )
 
28
import bzrlib.errors as errors
 
29
from bzrlib.weave import Weave, WeaveFormatError, WeaveError, reweave
 
30
from bzrlib.weavefile import write_weave, read_weave
 
31
from bzrlib.tests import TestCase
29
32
from bzrlib.osutils import sha_string
30
 
from bzrlib.tests import TestCase, TestCaseInTempDir
31
 
from bzrlib.weave import Weave, WeaveFormatError, WeaveError
32
 
from bzrlib.weavefile import write_weave, read_weave
33
33
 
34
34
 
35
35
# texts for use in testing
39
39
 
40
40
 
41
41
class TestBase(TestCase):
42
 
 
43
42
    def check_read_write(self, k):
44
43
        """Check the weave k can be written & re-read."""
45
44
        from tempfile import TemporaryFile
76
75
        k = Weave()
77
76
 
78
77
 
 
78
class StoreText(TestBase):
 
79
    """Store and retrieve a simple text."""
 
80
 
 
81
    def test_storing_text(self):
 
82
        k = Weave()
 
83
        idx = k.add_lines('text0', [], TEXT_0)
 
84
        self.assertEqual(k.get_lines(idx), TEXT_0)
 
85
        self.assertEqual(idx, 0)
 
86
 
 
87
 
79
88
class AnnotateOne(TestBase):
80
89
    def runTest(self):
81
90
        k = Weave()
84
93
                         [('text0', TEXT_0[0])])
85
94
 
86
95
 
 
96
class StoreTwo(TestBase):
 
97
    def runTest(self):
 
98
        k = Weave()
 
99
 
 
100
        idx = k.add_lines('text0', [], TEXT_0)
 
101
        self.assertEqual(idx, 0)
 
102
 
 
103
        idx = k.add_lines('text1', [], TEXT_1)
 
104
        self.assertEqual(idx, 1)
 
105
 
 
106
        self.assertEqual(k.get_lines(0), TEXT_0)
 
107
        self.assertEqual(k.get_lines(1), TEXT_1)
 
108
 
 
109
 
87
110
class GetSha1(TestBase):
88
111
    def test_get_sha1(self):
89
112
        k = Weave()
110
133
 
111
134
class RepeatedAdd(TestBase):
112
135
    """Add the same version twice; harmless."""
113
 
 
114
 
    def test_duplicate_add(self):
 
136
    def runTest(self):
115
137
        k = Weave()
116
138
        idx = k.add_lines('text0', [], TEXT_0)
117
139
        idx2 = k.add_lines('text0', [], TEXT_0)
707
729
        eq(wa.get_lines('b1'),
708
730
           ['hello\n', 'pale blue\n', 'world\n'])
709
731
 
 
732
    def test_join_parent_disagreement(self):
 
733
        #join reconciles differening parents into a union.
 
734
        wa = Weave()
 
735
        wb = Weave()
 
736
        wa.add_lines('v1', [], ['hello\n'])
 
737
        wb.add_lines('v0', [], [])
 
738
        wb.add_lines('v1', ['v0'], ['hello\n'])
 
739
        wa.join(wb)
 
740
        self.assertEqual(['v0'], wa.get_parents('v1'))
 
741
 
710
742
    def test_join_text_disagreement(self):
711
743
        """Cannot join weaves with different texts for a version."""
712
744
        wa = Weave()
858
890
        self.assertFalse(w1._compatible_parents(set(), set([1])))
859
891
        self.assertFalse(w1._compatible_parents(my_parents, set([1, 2, 3, 4])))
860
892
        self.assertFalse(w1._compatible_parents(my_parents, set([4])))
861
 
 
862
 
 
863
 
class TestWeaveFile(TestCaseInTempDir):
864
 
    
865
 
    def test_empty_file(self):
866
 
        f = open('empty.weave', 'wb+')
867
 
        try:
868
 
            self.assertRaises(errors.WeaveFormatError,
869
 
                              read_weave, f)
870
 
        finally:
871
 
            f.close()