[Zope-Checkins] CVS: Zope3/lib/python/Persistence/BTrees/tests - testBTrees.py:1.14

Tim Peters tim.one@comcast.net
Tue, 18 Jun 2002 15:43:14 -0400


Update of /cvs-repository/Zope3/lib/python/Persistence/BTrees/tests
In directory cvs.zope.org:/tmp/cvs-serv25027/tests

Modified Files:
	testBTrees.py 
Log Message:
Implemented the new-in-Python-2.2 sq_contains slot for Sets, Buckets,
TreeSets, and BTrees.  This allows writing:

    if key in set_bucket_treeset_or_btree:
    if key not in set_bucket_treeset_or_btree:

under Python 2.2 or later.  They're the same as:

    if set_bucket_treeset_or_btree.has_key(key):
    if not set_bucket_treeset_or_btree.has_key(key):

but are a little quicker because the former way avoids needing to load
the "has_key" string and doing a general method lookup.  Note that the
sq_contains slot implements a true Boolean (True/False in 2.3; 1/0 in
2.2) function, while the BTree has_key method actually returns the
depth of the bucket in which a key is found.


=== Zope3/lib/python/Persistence/BTrees/tests/testBTrees.py 1.13 => 1.14 ===
         self.t[1] = 1
         self.assert_(self.t.has_key(1))
+        self.assert_(1 in self.t)
+        self.assert_(0 not in self.t)
+        self.assert_(2 not in self.t)
 
     def testValuesWorks(self):
         for x in range(100):
@@ -367,6 +370,8 @@
         t = self.t
         t.insert(1)
         self.assert_(t.has_key(1))
+        self.assert_(1 in t)
+        self.assert_(2 not in t)
 
     def testBigInsert(self):
         t = self.t
@@ -375,6 +380,7 @@
             t.insert(x)
         for x in r:
             self.assert_(t.has_key(x))
+            self.assert_(x in t)
 
     def testRemoveSucceeds(self):
         t = self.t
@@ -391,6 +397,7 @@
     def testHasKeyFails(self):
         t = self.t
         self.assert_(not t.has_key(1))
+        self.assert_(1 not in t)
 
     def testKeys(self):
         t = self.t
@@ -423,6 +430,10 @@
         self.assertEqual(t.minKey() , 1)
         self.assertEqual(t.minKey(3) , 3)
         self.assertEqual(t.minKey(9) , 10)
+        self.assert_(t.minKey() in t)
+        self.assert_(t.minKey()-1 not in t)
+        self.assert_(t.maxKey() in t)
+        self.assert_(t.maxKey()+1 not in t)
 
     def testUpdate(self):
         d={}
@@ -432,11 +443,11 @@
             d[k]=i
             l.append(k)
 
-        items=d.keys()
+        items = d.keys()
         items.sort()
 
         self.t.update(l)
-        self.assertEqual(list(self.t.keys()) , items)
+        self.assertEqual(list(self.t.keys()), items)
 
     def testEmptyRangeSearches(self):
         t = self.t
@@ -604,6 +615,7 @@
         for x in r:
             k = random.choice(r)
             if self.t.has_key(k):
+                self.assert_(k in self.t)
                 del self.t[k]
                 deleted.append(k)
                 if self.t.has_key(k):
@@ -939,7 +951,7 @@
         self.assertEqual(t.has_key(7), 5)
         self.assertEqual(t.has_key(11), 5)
         for i in 0, 2, 4, 6, 8, 9, 10, 12:
-            self.assertEqual(t.has_key(i), 0)
+            self.assert_(i not in t)
 
     def _checkRanges(self, tree, keys):
         self.assertEqual(len(tree), len(keys))
@@ -947,7 +959,7 @@
         sorted_keys.sort()
         self.assertEqual(list(tree.keys()), sorted_keys)
         for k in keys:
-            self.assert_(tree.has_key(k))
+            self.assert_(k in tree)
         if keys:
             lokey = sorted_keys[0]
             hikey = sorted_keys[-1]