[Zodb-checkins] CVS: Zope3/src/zodb/btrees/tests - test_btrees.py:1.8

Tim Peters tim.one@comcast.net
Fri, 7 Mar 2003 15:06:33 -0500


Update of /cvs-repository/Zope3/src/zodb/btrees/tests
In directory cvs.zope.org:/tmp/cvs-serv23102/src/zodb/btrees/tests

Modified Files:
	test_btrees.py 
Log Message:
Exclusive-range searches weren't even tried before on the values(),
items(), iterkeys(), itervalues() and iteritems() methods.  They are
now, for mapping types.  The iterkeys() method on TreeSets is still
untested (keys() for all types was tested in simple ways before via
Base.testSimpleExclusiveKeyRange, and difficult tests on keys were
added to the DegenerateBTree class before).


=== Zope3/src/zodb/btrees/tests/test_btrees.py 1.7 => 1.8 ===
--- Zope3/src/zodb/btrees/tests/test_btrees.py:1.7	Tue Feb 25 13:55:02 2003
+++ Zope3/src/zodb/btrees/tests/test_btrees.py	Fri Mar  7 15:06:32 2003
@@ -512,6 +512,62 @@
         self.t.update([(1, 2)])
         self.assertEqual(list(self.t.items()), [(1, 2)])
 
+    def testSimpleExclusivRanges(self):
+        def identity(x):
+            return x
+        def dup(x):
+            return [(y, y) for y in x]
+
+        for methodname, f in (("keys", identity),
+                              ("values", identity),
+                              ("items", dup),
+                              ("iterkeys", identity),
+                              ("itervalues", identity),
+                              ("iteritems", dup)):
+
+            t = self.t.__class__()
+            meth = getattr(t, methodname, None)
+            if meth is None:
+                continue
+
+            self.assertEqual(list(meth()), [])
+            self.assertEqual(list(meth(excludemin=True)), [])
+            self.assertEqual(list(meth(excludemax=True)), [])
+            self.assertEqual(list(meth(excludemin=True, excludemax=True)), [])
+
+            self._populate(t, 1)
+            self.assertEqual(list(meth()), f([0]))
+            self.assertEqual(list(meth(excludemin=True)), [])
+            self.assertEqual(list(meth(excludemax=True)), [])
+            self.assertEqual(list(meth(excludemin=True, excludemax=True)), [])
+
+            t.clear()
+            self._populate(t, 2)
+            self.assertEqual(list(meth()), f([0, 1]))
+            self.assertEqual(list(meth(excludemin=True)), f([1]))
+            self.assertEqual(list(meth(excludemax=True)), f([0]))
+            self.assertEqual(list(meth(excludemin=True, excludemax=True)), [])
+
+            t.clear()
+            self._populate(t, 3)
+            self.assertEqual(list(meth()), f([0, 1, 2]))
+            self.assertEqual(list(meth(excludemin=True)), f([1, 2]))
+            self.assertEqual(list(meth(excludemax=True)), f([0, 1]))
+            self.assertEqual(list(meth(excludemin=True, excludemax=True)),
+                            f([1]))
+            self.assertEqual(list(meth(-1, 3, excludemin=True,
+                                       excludemax=True)),
+                             f([0, 1, 2]))
+            self.assertEqual(list(meth(0, 3, excludemin=True,
+                                       excludemax=True)),
+                             f([1, 2]))
+            self.assertEqual(list(meth(-1, 2, excludemin=True,
+                                       excludemax=True)),
+                             f([0, 1]))
+            self.assertEqual(list(meth(0, 2, excludemin=True,
+                                       excludemax=True)),
+                             f([1]))
+
 class NormalSetTests(Base):
     """ Test common to all set types """