[Zope-Checkins]
SVN: Zope/trunk/lib/python/Shared/DC/ZRDB/tests/test_results.py
Add tests for this miserable class in preparation for someday
replacing it.
Chris McDonough
chrism at plope.com
Fri Sep 9 12:43:20 EDT 2005
Log message for revision 38435:
Add tests for this miserable class in preparation for someday replacing it.
Changed:
A Zope/trunk/lib/python/Shared/DC/ZRDB/tests/test_results.py
-=-
Added: Zope/trunk/lib/python/Shared/DC/ZRDB/tests/test_results.py
===================================================================
--- Zope/trunk/lib/python/Shared/DC/ZRDB/tests/test_results.py 2005-09-09 14:57:44 UTC (rev 38434)
+++ Zope/trunk/lib/python/Shared/DC/ZRDB/tests/test_results.py 2005-09-09 16:43:19 UTC (rev 38435)
@@ -0,0 +1,193 @@
+""" Unit tests for Products.RHGDelivery.simpleresults
+
+$Id: test_results.py,v 1.2 2005/09/07 21:25:47 tseaver Exp $
+"""
+import unittest
+
+from ExtensionClass import Base
+from Acquisition import aq_parent
+
+class Brain:
+ def __init__(self, *args): pass
+
+Parent = Base()
+
+class TestResults(unittest.TestCase):
+
+ # test fixtures
+ columns = [ {'name' : 'string', 'type' : 't', 'width':1},
+ {'name':'int', 'type': 'i'} ]
+ data = [['string1', 1], ['string2', 2]]
+
+ def _getTargetClass(self):
+ from Shared.DC.ZRDB.Results import Results
+ return Results
+
+ def _makeOne(self, *args, **kw):
+ return self._getTargetClass()(*args, **kw)
+
+ def test_searchable_result_columns(self):
+ ob = self._makeOne((self.columns, self.data))
+ self.assertEqual(ob._searchable_result_columns(), self.columns)
+
+ def test_names(self):
+ ob = self._makeOne((self.columns, self.data))
+ self.assertEqual(ob.names(), ['string', 'int'])
+
+ def test_data_dictionary(self):
+ ob = self._makeOne((self.columns, self.data))
+ self.assertEqual(
+ ob.data_dictionary(),
+ { 'string':{'name' : 'string', 'type' : 't', 'width':1},
+ 'int':{'name':'int', 'type': 'i'} }
+ )
+
+ def test_len(self):
+ ob = self._makeOne((self.columns, self.data))
+ self.assertEqual(len(ob), 2)
+
+ def test_getitem(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ self.assertEquals(row[0], 'string1')
+ self.assertEquals(row[1], 1)
+ row = ob[1]
+ self.assertEquals(row[0], 'string2')
+ self.assertEquals(row[1], 2)
+
+ def test_getattr_and_aliases(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ self.assertEqual(row.string, 'string1')
+ self.assertEqual(row.int, 1)
+ self.assertEqual(row.STRING, 'string1')
+ self.assertEqual(row.INT, 1)
+ row = ob[1]
+ self.assertEqual(row.string, 'string2')
+ self.assertEqual(row.int, 2)
+ self.assertEqual(row.STRING, 'string2')
+ self.assertEqual(row.INT, 2)
+
+ def test_suppliedbrain(self):
+ ob = self._makeOne((self.columns, self.data), brains=Brain)
+ row = ob[0]
+ self.failUnless(isinstance(row, Brain))
+
+ def test_suppliedparent(self):
+ ob = self._makeOne((self.columns, self.data), parent=Parent)
+ row = ob[0]
+ self.failUnless(aq_parent(row) is Parent)
+
+ def test_tuples(self):
+ ob = self._makeOne((self.columns, self.data))
+ tuples = ob.tuples()
+ self.assertEqual( tuples, [('string1', 1), ('string2', 2)] )
+
+ def test_dictionaries(self):
+ ob = self._makeOne((self.columns, self.data))
+ dicts = ob.dictionaries()
+ self.assertEqual( dicts, [{'string':'string1', 'int':1},
+ {'string':'string2', 'int':2}] )
+
+ def test_asRDB(self):
+ ob = self._makeOne((self.columns, self.data))
+ asrdb = ob.asRDB()
+ columns = ['string\tint', '1t\ti', 'string1\t1', 'string2\t2\n']
+ self.assertEqual(asrdb, '\n'.join(columns))
+
+ def _set_noschema(self, row):
+ row.cantdoit = 1
+
+ def test_recordschema(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ self.assertEqual(row.__record_schema__, {'string':0, 'int':1})
+ self.assertRaises(AttributeError, self._set_noschema, row)
+
+ def test_record_as_read_mapping(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ self.assertEqual('%(string)s %(int)s' % row, 'string1 1')
+ row = ob[1]
+ self.assertEqual('%(string)s %(int)s' % row, 'string2 2')
+
+ def test_record_as_write_mapping(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ row['int'] = 5
+ self.assertEqual('%(string)s %(int)s' % row, 'string1 5')
+
+ def test_record_as_write_mapping2(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ row.int = 5
+ self.assertEqual('%(string)s %(int)s' % row, 'string1 5')
+
+ def test_record_as_sequence(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ self.assertEqual(row[0], 'string1')
+ self.assertEqual(row[1], 1)
+ self.assertEqual(list(row), ['string1', 1])
+ row = ob[1]
+ self.assertEqual(row[0], 'string2')
+ self.assertEqual(row[1], 2)
+ self.assertEqual(list(row), ['string2', 2])
+
+ def test_record_of(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ wrapped = row.__of__(Parent)
+ self.assertEqual(wrapped.aq_self, row)
+ self.assertEqual(wrapped.aq_parent, Parent)
+
+ def test_record_hash(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ self.assert_(isinstance(hash(row), int))
+
+ def test_record_len(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ self.assertEqual(len(row), 2)
+
+ def _add(self, row1, row2):
+ return row1 + row2
+
+ def test_record_add(self):
+ ob = self._makeOne((self.columns, self.data))
+ row1 = ob[0]
+ row2 = ob[1]
+ self.assertRaises(TypeError, self._add, row1, row2)
+
+ def _slice(self, row):
+ return row[1:]
+
+ def test_record_slice(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ self.assertRaises(TypeError, self._slice, row)
+
+ def _mul(self, row):
+ return row * 3
+
+ def test_record_mul(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ self.assertRaises(TypeError, self._mul, row)
+
+ def _del(self, row):
+ del row[0]
+
+ def test_record_delitem(self):
+ ob = self._makeOne((self.columns, self.data))
+ row = ob[0]
+ self.assertRaises(TypeError, self._del, row)
+
+def test_suite():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(TestResults))
+ return suite
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
More information about the Zope-Checkins
mailing list