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