~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test__groupcompress.py

  • Committer: John Arbash Meinel
  • Date: 2009-03-27 20:19:44 UTC
  • mto: (3735.39.2 clean)
  • mto: This revision was merged to the branch mainline in revision 4280.
  • Revision ID: john@arbash-meinel.com-20090327201944-7uorvlyn16yhakvk
Add tests that the deltas generated by one implementation are compatible
with apply_delta with the other implementation.
This is a 4-way comparison.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
 
26
26
def load_tests(standard_tests, module, loader):
27
27
    """Parameterize tests for all versions of groupcompress."""
28
 
    to_adapt, result = tests.split_suite_by_condition(
29
 
        standard_tests, tests.condition_isinstance(TestMakeAndApplyDelta))
 
28
    two_way_scenarios = [
 
29
        ('PP', {'make_delta': _groupcompress_py.make_delta,
 
30
                'apply_delta': _groupcompress_py.apply_delta})
 
31
        ]
30
32
    scenarios = [
31
33
        ('python', {'_gc_module': _groupcompress_py}),
32
34
        ]
34
36
        from bzrlib import _groupcompress_pyx
35
37
        scenarios.append(('C',
36
38
            {'_gc_module': _groupcompress_pyx}))
37
 
    return tests.multiply_tests(to_adapt, scenarios, result)
 
39
        two_way_scenarios.extend([
 
40
            ('CC', {'make_delta': _groupcompress_pyx.make_delta,
 
41
                    'apply_delta': _groupcompress_pyx.apply_delta}),
 
42
            ('PC', {'make_delta': _groupcompress_py.make_delta,
 
43
                    'apply_delta': _groupcompress_pyx.apply_delta}),
 
44
            ('CP', {'make_delta': _groupcompress_pyx.make_delta,
 
45
                    'apply_delta': _groupcompress_py.apply_delta}),
 
46
            ])
 
47
    to_adapt, result = tests.split_suite_by_condition(
 
48
        standard_tests, tests.condition_isinstance(TestMakeAndApplyDelta))
 
49
    result = tests.multiply_tests(to_adapt, scenarios, result)
 
50
    to_adapt, result = tests.split_suite_by_condition(result,
 
51
        tests.condition_isinstance(TestMakeAndApplyCompatible))
 
52
    result = tests.multiply_tests(to_adapt, two_way_scenarios, result)
 
53
    return result
38
54
 
39
55
 
40
56
class _CompiledGroupCompressFeature(tests.Feature):
185
201
        self.assertEqual(_text1, target)
186
202
 
187
203
 
 
204
class TestMakeAndApplyCompatible(tests.TestCase):
 
205
 
 
206
    make_delta = None # filled in by multiply_tests
 
207
    apply_delta = None # filled in by multiply_tests
 
208
 
 
209
    def assertMakeAndApply(self, source, target):
 
210
        """Assert that generating a delta and applying gives success."""
 
211
        delta = self.make_delta(source, target)
 
212
        bytes = self.apply_delta(source, delta)
 
213
        self.assertEqualDiff(target, bytes)
 
214
 
 
215
    def test_direct(self):
 
216
        self.assertMakeAndApply(_text1, _text2)
 
217
        self.assertMakeAndApply(_text2, _text1)
 
218
        self.assertMakeAndApply(_text1, _text3)
 
219
        self.assertMakeAndApply(_text3, _text1)
 
220
        self.assertMakeAndApply(_text2, _text3)
 
221
        self.assertMakeAndApply(_text3, _text2)
 
222
 
 
223
 
188
224
class TestDeltaIndex(tests.TestCase):
189
225
 
190
226
    def setUp(self):