]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Add a test for that OrderedDict fix, also add more paranoia in the constructor.
authorJason Kirtland <jek@discorporate.us>
Tue, 3 Jul 2007 21:04:47 +0000 (21:04 +0000)
committerJason Kirtland <jek@discorporate.us>
Tue, 3 Jul 2007 21:04:47 +0000 (21:04 +0000)
lib/sqlalchemy/util.py
test/base/alltests.py
test/base/utils.py [new file with mode: 0644]

index 3a59cbbbd5531ce2c0a474e3dcc4d43d47406f4f..47e729d7def42c2872e9f5127478c9cf34a6d11c 100644 (file)
@@ -266,12 +266,12 @@ class OrderedProperties(object):
 class OrderedDict(dict):
     """A Dictionary that returns keys/values/items in the order they were added."""
 
-    def __init__(self, d=None, **kwargs):
+    def __init__(self, ____sequence=None, **kwargs):
         self._list = []
-        if d is None:
+        if ____sequence is None:
             self.update(**kwargs)
         else:
-            self.update(d, **kwargs)
+            self.update(____sequence, **kwargs)
 
     def clear(self):
         self._list = []
index 70ff83ab8a930e2188938f42e4443dcf8da03e2f..44fa9b2ecfb361e5fc317865756f462d79c98743 100644 (file)
@@ -5,6 +5,7 @@ def suite():
     modules_to_test = (
         # core utilities
         'base.dependency',
+        'base.utils',
         )
     alltests = unittest.TestSuite()
     for name in modules_to_test:
diff --git a/test/base/utils.py b/test/base/utils.py
new file mode 100644 (file)
index 0000000..ccf6b44
--- /dev/null
@@ -0,0 +1,36 @@
+import testbase
+from sqlalchemy import util
+
+class OrderedDictTest(testbase.PersistTest):
+    def test_odict(self):
+        o = util.OrderedDict()
+        o['a'] = 1
+        o['b'] = 2
+        o['snack'] = 'attack'
+        o['c'] = 3
+
+        self.assert_(o.keys() == ['a', 'b', 'snack', 'c'])
+        self.assert_(o.values() == [1, 2, 'attack', 3])
+    
+        o.pop('snack')
+
+        self.assert_(o.keys() == ['a', 'b', 'c'])
+        self.assert_(o.values() == [1, 2, 3])
+
+        o2 = util.OrderedDict(d=4)
+        o2['e'] = 5
+
+        self.assert_(o2.keys() == ['d', 'e'])
+        self.assert_(o2.values() == [4, 5])
+
+        o.update(o2)
+        self.assert_(o.keys() == ['a', 'b', 'c', 'd', 'e'])
+        self.assert_(o.values() == [1, 2, 3, 4, 5])
+
+        o.setdefault('c', 'zzz')
+        o.setdefault('f', 6)
+        self.assert_(o.keys() == ['a', 'b', 'c', 'd', 'e', 'f'])
+        self.assert_(o.values() == [1, 2, 3, 4, 5, 6])
+
+if __name__ == "__main__":
+    testbase.main()