[Zope-Checkins] SVN: Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/ - Fixed Shared.DC.ZRDB.{RDB|Results} to behave nicely with the new-style extensionclass

Sidnei da Silva sidnei at awkly.org
Wed Mar 16 09:07:10 EST 2005


Log message for revision 29493:
  
  - Fixed Shared.DC.ZRDB.{RDB|Results} to behave nicely with the new-style extensionclass
  - Added a minimal test
  

Changed:
  U   Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/RDB.py
  U   Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/Results.py
  A   Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/
  A   Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/__init__.py
  A   Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/testResult.py

-=-
Modified: Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/RDB.py
===================================================================
--- Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/RDB.py	2005-03-16 14:01:07 UTC (rev 29492)
+++ Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/RDB.py	2005-03-16 14:07:10 UTC (rev 29493)
@@ -141,9 +141,9 @@
             setattr(r,k,getattr(Record,k))
 
         # Add SQL Aliases
-        d=r.__dict__
         for k, v in aliases:
-            if not hasattr(r,k): d[k]=v
+            if not hasattr(r,k):
+                setattr(r, k, v)
 
         if hasattr(brains, '__init__'):
             binit=brains.__init__
@@ -152,9 +152,8 @@
                 Record.__init__(self,data)
                 binit(self.__of__(parent))
 
-            r.__dict__['__init__']=__init__
+            setattr(r, '__init__', __init__)
 
-
         self._class=r
 
         # OK, we've read meta data, now get line indexes

Modified: Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/Results.py
===================================================================
--- Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/Results.py	2005-03-16 14:01:07 UTC (rev 29492)
+++ Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/Results.py	2005-03-16 14:07:10 UTC (rev 29493)
@@ -71,9 +71,9 @@
                 setattr(r,k,getattr(Record,k))
 
         # Add SQL Aliases
-        d=r.__dict__
         for k, v in aliases:
-            if not hasattr(r,k): d[k]=v
+            if not hasattr(r, k):
+                setattr(r, k, v)
 
         if hasattr(brains, '__init__'):
             binit=brains.__init__
@@ -83,7 +83,7 @@
                 if parent is not None: self=self.__of__(parent)
                 binit(self)
 
-            r.__dict__['__init__']=__init__
+            setattr(r, '__init__', __init__)
 
         self._class=r
 

Added: Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/__init__.py
===================================================================
--- Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/__init__.py	2005-03-16 14:01:07 UTC (rev 29492)
+++ Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/__init__.py	2005-03-16 14:07:10 UTC (rev 29493)
@@ -0,0 +1 @@
+# import this


Property changes on: Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/__init__.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/testResult.py
===================================================================
--- Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/testResult.py	2005-03-16 14:01:07 UTC (rev 29492)
+++ Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/testResult.py	2005-03-16 14:07:10 UTC (rev 29493)
@@ -0,0 +1,68 @@
+from unittest import TestCase, TestSuite, makeSuite, main
+from cStringIO import StringIO
+from ExtensionClass import Base
+from Shared.DC.ZRDB.Results import Results
+from Shared.DC.ZRDB import RDB
+
+class Brain:
+    def __init__(self, *args): pass
+
+Parent = Base()
+
+class TestResults(TestCase):
+
+    def test_results(self):
+        r = Results(([{'name':'foo', 'type':'integer'},
+                      {'name':'bar', 'type':'integer'}],
+                     ((1, 2), (3, 4))),
+                    brains=Brain,
+                    parent=Parent)
+        self.assertEquals(len(r), 2)
+        row = r[0]
+        self.assertEquals(row[0], 1)
+        self.assertEquals(row[1], 2)
+        self.assertEquals(row.foo, 1)
+        self.assertEquals(row.bar, 2)
+        self.assertEquals(row.FOO, 1)
+        self.assertEquals(row.BAR, 2)
+        row = r[1]
+        self.assertEquals(row[0], 3)
+        self.assertEquals(row[1], 4)
+        self.assertEquals(row.foo, 3)
+        self.assertEquals(row.bar, 4)
+        self.assertEquals(row.FOO, 3)
+        self.assertEquals(row.BAR, 4)
+        self.failUnless(isinstance(row, Brain))
+
+    def test_rdb_file(self):
+        infile = StringIO("""\
+        foo\tbar
+        2i\t2i
+        1\t2
+        3\t4\
+        """)
+        r = RDB.File(infile,
+                     brains=Brain,
+                     parent=Parent)
+        self.assertEquals(len(r), 2)
+        row = r[0]
+        self.assertEquals(row[0], 1)
+        self.assertEquals(row[1], 2)
+        self.assertEquals(row.foo, 1)
+        self.assertEquals(row.bar, 2)
+        self.assertEquals(row.FOO, 1)
+        self.assertEquals(row.BAR, 2)
+        row = r[1]
+        self.assertEquals(row[0], 3)
+        self.assertEquals(row[1], 4)
+        self.assertEquals(row.foo, 3)
+        self.assertEquals(row.bar, 4)
+        self.assertEquals(row.FOO, 3)
+        self.assertEquals(row.BAR, 4)
+        self.failUnless(isinstance(row, Brain))
+
+def test_suite():
+    return TestSuite((makeSuite(TestResults),))
+
+if __name__ == '__main__':
+    main(defaultTest='test_suite')


Property changes on: Zope/branches/five-integration/lib/python/Shared/DC/ZRDB/tests/testResult.py
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Zope-Checkins mailing list