Implement and test iter{keys,values,items} for tdb bindings.
authortpot <tpot@0c0555d6-39d7-0310-84fc-f1cc0bd64818>
Sun, 6 Jan 2008 23:17:55 +0000 (23:17 +0000)
committertpot <tpot@0c0555d6-39d7-0310-84fc-f1cc0bd64818>
Sun, 6 Jan 2008 23:17:55 +0000 (23:17 +0000)
Use tempfile.mkstemp() instead of os.tmpnam() in tests.

git-svn-id: svn+ssh://svn.samba.org/data/svn/samba/branches/SAMBA_4_0@26677 0c0555d6-39d7-0310-84fc-f1cc0bd64818

source/lib/tdb/python/tests/simple.py
source/lib/tdb/tdb.i

index 698a77f94235a40b2812ca36baa9bf3731073ac9..1cc51aea07fb4e0ca350ee5ab7c0c74dab423052 100644 (file)
@@ -8,7 +8,7 @@
 
 import tdb
 from unittest import TestCase
-import os
+import os, tempfile
 
 
 class OpenTdbTests(TestCase):
@@ -19,7 +19,7 @@ class OpenTdbTests(TestCase):
 class SimpleTdbTests(TestCase):
     def setUp(self):
         super(SimpleTdbTests, self).setUp()
-        self.tdb = tdb.Tdb(os.tmpnam(), 0, tdb.DEFAULT, os.O_CREAT|os.O_RDWR)
+        self.tdb = tdb.Tdb(tempfile.mkstemp()[1], 0, tdb.DEFAULT, os.O_CREAT|os.O_RDWR)
         self.assertNotEqual(None, self.tdb)
 
     def tearDown(self):
@@ -82,6 +82,13 @@ class SimpleTdbTests(TestCase):
         self.tdb["brainslug"] = "2"
         self.assertEquals([("bla", "1"), ("brainslug", "2")], self.tdb.items())
 
+    def test_iteritems(self):
+        self.tdb["bloe"] = "2"
+        self.tdb["bla"] = "25"
+        i = self.tdb.iteritems()
+        self.assertEquals(set([("bla", "25"), ("bloe", "2")]),
+                              set([i.next(), i.next()]))
+
     def test_transaction_cancel(self):
         self.tdb["bloe"] = "2"
         self.tdb.transaction_start()
@@ -107,11 +114,23 @@ class SimpleTdbTests(TestCase):
         self.tdb["bla"] = "25"
         self.assertEquals(["bla", "bloe"], self.tdb.keys())
 
+    def test_iterkeys(self):
+        self.tdb["bloe"] = "2"
+        self.tdb["bla"] = "25"
+        i = self.tdb.iterkeys()
+        self.assertEquals(set(["bloe", "bla"]), set([i.next(), i.next()]))
+
     def test_values(self):
         self.tdb["bloe"] = "2"
         self.tdb["bla"] = "25"
         self.assertEquals(["25", "2"], self.tdb.values())
 
+    def test_itervalues(self):
+        self.tdb["bloe"] = "2"
+        self.tdb["bla"] = "25"
+        i = self.tdb.itervalues()
+        self.assertEquals(set(["25", "2"]), set([i.next(), i.next()]))
+
     def test_clear(self):
         self.tdb["bloe"] = "2"
         self.tdb["bla"] = "25"
index 5e928941de8fffa40e0c77f7c8eeb771fdf42c25..c82d2d0a6da2777999b54ab6c2c2a79aaae70c50 100644 (file)
@@ -263,7 +263,17 @@ typedef struct tdb_context {
         for k in iter(self):
             del(self[k])
 
-    # TODO: iterkeys, itervalues, iteritems
+    def iterkeys(self):
+        for k in iter(self):
+            yield k
+       
+    def itervalues(self):
+        for k in iter(self):
+            yield self[k]
+
+    def iteritems(self):
+        for k in iter(self):
+            yield (k, self[k])
 
     # TODO: any other missing methods for container types
     }