[Checkins] SVN: BTrees/branches/pure_python/ Start at tests for conflict resolution.

Tres Seaver cvs-admin at zope.org
Mon Nov 12 20:31:05 UTC 2012


Log message for revision 128262:
  Start at tests for conflict resolution.

Changed:
  _U  BTrees/branches/pure_python/
  U   BTrees/branches/pure_python/BTrees/tests/test__base.py

-=-
Modified: BTrees/branches/pure_python/BTrees/tests/test__base.py
===================================================================
--- BTrees/branches/pure_python/BTrees/tests/test__base.py	2012-11-12 20:31:04 UTC (rev 128261)
+++ BTrees/branches/pure_python/BTrees/tests/test__base.py	2012-11-12 20:31:04 UTC (rev 128262)
@@ -21,6 +21,13 @@
         from .._base import _BucketBase
         return _BucketBase
 
+    def assertRaises(self, e_type, checked, *args, **kw):
+        try:
+            checked(*args, **kw)
+        except e_type as e:
+            return e
+        self.fail("Didn't raise: %s" % e_type.__name__)
+
     def _makeOne(self, *args, **kw):
         return self._getTargetClass()(*args, **kw)
 
@@ -355,7 +362,55 @@
         for key in KEYS:
             self.assertTrue(key in bucket)
 
+    def _with_setstate(self):
+        class _WithSetState(self._getTargetClass()):
+            def __setstate__(self, state):
+                self._keys, self._next = state
+        return _WithSetState()
 
+    def test__p_resolveConflict_new_next(self):
+        from ..Interfaces import BTreesConflictError
+        bucket = self._with_setstate()
+        N_NEW = object()
+        s_old = ([], None)
+        s_com = ([], N_NEW)
+        s_new = ([], None)
+        e = self.assertRaises(BTreesConflictError,
+                              bucket._p_resolveConflict, s_old, s_com, s_new)
+        self.assertEqual(e.reason, 0)
+
+    def test__p_resolveConflict_committed_next(self):
+        from ..Interfaces import BTreesConflictError
+        bucket = self._with_setstate()
+        N_NEW = object()
+        s_old = ([], None)
+        s_com = ([], None)
+        s_new = ([], N_NEW)
+        e = self.assertRaises(BTreesConflictError,
+                              bucket._p_resolveConflict, s_old, s_com, s_new)
+        self.assertEqual(e.reason, 0)
+
+    def test__p_resolveConflict_empty_committed(self):
+        from ..Interfaces import BTreesConflictError
+        bucket = self._with_setstate()
+        s_old = ([], None)
+        s_com = ([], None)
+        s_new = (['a'], None)
+        e = self.assertRaises(BTreesConflictError,
+                              bucket._p_resolveConflict, s_old, s_com, s_new)
+        self.assertEqual(e.reason, 12)
+
+    def test__p_resolveConflict_empty_new(self):
+        from ..Interfaces import BTreesConflictError
+        bucket = self._with_setstate()
+        s_old = ([], None)
+        s_com = (['a'], None)
+        s_new = ([], None)
+        e = self.assertRaises(BTreesConflictError,
+                              bucket._p_resolveConflict, s_old, s_com, s_new)
+        self.assertEqual(e.reason, 12)
+
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(Test_BucketBase),



More information about the checkins mailing list