[Zope3-checkins] SVN: Zope3/trunk/src/zope/schema/ Fix accessor
field query method; add tests for get, query, and set.
Gary Poster
gary at zope.com
Thu Mar 10 23:11:07 EST 2005
Log message for revision 29436:
Fix accessor field query method; add tests for get, query, and set.
Changed:
U Zope3/trunk/src/zope/schema/accessors.py
U Zope3/trunk/src/zope/schema/tests/test_accessors.py
-=-
Modified: Zope3/trunk/src/zope/schema/accessors.py
===================================================================
--- Zope3/trunk/src/zope/schema/accessors.py 2005-03-10 20:47:10 UTC (rev 29435)
+++ Zope3/trunk/src/zope/schema/accessors.py 2005-03-11 04:11:07 UTC (rev 29436)
@@ -71,7 +71,12 @@
return getattr(object, self.__name__)()
def query(self, object, default=None):
- return getattr(object, self.__name__)()
+ try:
+ f = getattr(object, self.__name__)
+ except AttributeError:
+ return default
+ else:
+ return f()
def set(self, object, value):
if self.readonly:
Modified: Zope3/trunk/src/zope/schema/tests/test_accessors.py
===================================================================
--- Zope3/trunk/src/zope/schema/tests/test_accessors.py 2005-03-10 20:47:10 UTC (rev 29435)
+++ Zope3/trunk/src/zope/schema/tests/test_accessors.py 2005-03-11 04:11:07 UTC (rev 29436)
@@ -39,12 +39,15 @@
class Good(object):
implements(I)
+
+ def __init__(self):
+ self.set = 0
def getFoo(self):
return u"foo"
def setFoo(self, v):
- pass
+ self.set += 1
names = I.names()
names.sort()
@@ -71,10 +74,19 @@
self.assertRaises(Exception, verifyClass, I, Bad)
self.assertRaises(Exception, verifyObject, I, Bad())
+
+ self.assertEquals(I['getFoo'].query(Bad(), 42), 42)
+ self.assertRaises(AttributeError, I['getFoo'].get, Bad())
verifyClass(I, Good)
verifyObject(I, Good())
+ self.assertEquals(I['getFoo'].query(Good(), 42), u'foo')
+ self.assertEquals(I['getFoo'].get(Good()), u'foo')
+ instance = Good()
+ I['getFoo'].set(instance, u'whatever')
+ self.assertEquals(instance.set, 1)
+
def test_doc(self):
field = Text(title=u"Foo thing")
More information about the Zope3-Checkins
mailing list