Rev 3919: Add tests that the deltas generated by one implementation are compatible in http://bzr.arbash-meinel.com/branches/bzr/brisbane/vilajam

John Arbash Meinel john at arbash-meinel.com
Fri Mar 27 20:20:00 GMT 2009


At http://bzr.arbash-meinel.com/branches/bzr/brisbane/vilajam

------------------------------------------------------------
revno: 3919
revision-id: john at arbash-meinel.com-20090327201944-7uorvlyn16yhakvk
parent: john at arbash-meinel.com-20090327201212-1ykalx15yr1cquxt
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: vilajam
timestamp: Fri 2009-03-27 15:19:44 -0500
message:
  Add tests that the deltas generated by one implementation are compatible
  with apply_delta with the other implementation.
  This is a 4-way comparison.
-------------- next part --------------
=== modified file 'bzrlib/tests/test__groupcompress.py'
--- a/bzrlib/tests/test__groupcompress.py	2009-03-27 20:12:12 +0000
+++ b/bzrlib/tests/test__groupcompress.py	2009-03-27 20:19:44 +0000
@@ -25,8 +25,10 @@
 
 def load_tests(standard_tests, module, loader):
     """Parameterize tests for all versions of groupcompress."""
-    to_adapt, result = tests.split_suite_by_condition(
-        standard_tests, tests.condition_isinstance(TestMakeAndApplyDelta))
+    two_way_scenarios = [
+        ('PP', {'make_delta': _groupcompress_py.make_delta,
+                'apply_delta': _groupcompress_py.apply_delta})
+        ]
     scenarios = [
         ('python', {'_gc_module': _groupcompress_py}),
         ]
@@ -34,7 +36,21 @@
         from bzrlib import _groupcompress_pyx
         scenarios.append(('C',
             {'_gc_module': _groupcompress_pyx}))
-    return tests.multiply_tests(to_adapt, scenarios, result)
+        two_way_scenarios.extend([
+            ('CC', {'make_delta': _groupcompress_pyx.make_delta,
+                    'apply_delta': _groupcompress_pyx.apply_delta}),
+            ('PC', {'make_delta': _groupcompress_py.make_delta,
+                    'apply_delta': _groupcompress_pyx.apply_delta}),
+            ('CP', {'make_delta': _groupcompress_pyx.make_delta,
+                    'apply_delta': _groupcompress_py.apply_delta}),
+            ])
+    to_adapt, result = tests.split_suite_by_condition(
+        standard_tests, tests.condition_isinstance(TestMakeAndApplyDelta))
+    result = tests.multiply_tests(to_adapt, scenarios, result)
+    to_adapt, result = tests.split_suite_by_condition(result,
+        tests.condition_isinstance(TestMakeAndApplyCompatible))
+    result = tests.multiply_tests(to_adapt, two_way_scenarios, result)
+    return result
 
 
 class _CompiledGroupCompressFeature(tests.Feature):
@@ -185,6 +201,26 @@
         self.assertEqual(_text1, target)
 
 
+class TestMakeAndApplyCompatible(tests.TestCase):
+
+    make_delta = None # filled in by multiply_tests
+    apply_delta = None # filled in by multiply_tests
+
+    def assertMakeAndApply(self, source, target):
+        """Assert that generating a delta and applying gives success."""
+        delta = self.make_delta(source, target)
+        bytes = self.apply_delta(source, delta)
+        self.assertEqualDiff(target, bytes)
+
+    def test_direct(self):
+        self.assertMakeAndApply(_text1, _text2)
+        self.assertMakeAndApply(_text2, _text1)
+        self.assertMakeAndApply(_text1, _text3)
+        self.assertMakeAndApply(_text3, _text1)
+        self.assertMakeAndApply(_text2, _text3)
+        self.assertMakeAndApply(_text3, _text2)
+
+
 class TestDeltaIndex(tests.TestCase):
 
     def setUp(self):



More information about the bazaar-commits mailing list