[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