[Zodb-checkins] CVS: Zope/lib/Components/ExtensionClass/test - test_acquisition.py:1.4

Shane Hathaway shane@digicool.com
Fri, 14 Sep 2001 16:00:14 -0400


Update of /cvs-repository/Zope/lib/Components/ExtensionClass/test
In directory cvs.zope.org:/tmp/cvs-serv32296/test

Modified Files:
	test_acquisition.py 
Log Message:
Corrected aq_inContextOf().   The former code returned the incorrect result
if the context object was the root of the hierarchy, a condition which
normally does not occur in Zope, but can occur in scripts.


=== Zope/lib/Components/ExtensionClass/test/test_acquisition.py 1.3 => 1.4 ===
 assert( b.c.d == b.c )
 assert( b.c == c )
+
+
+def checkContext(self, o):
+    # Python equivalent to aq_inContextOf
+    from Acquisition import aq_base, aq_parent, aq_inner
+    subob = self
+    o = aq_base(o)
+    while 1:
+      if aq_base(subob) is o: return 1
+      self = aq_inner(subob)
+      if self is None: break
+      subob = aq_parent(self)
+      if subob is None: break
+
+
+assert checkContext(b.c, b)
+assert not checkContext(b.c, b.a)
+
+assert b.a.aq_inContextOf(b)
+assert b.c.aq_inContextOf(b)
+assert b.c.d.aq_inContextOf(b)
+assert b.c.d.aq_inContextOf(c)
+assert b.c.d.aq_inContextOf(b.c)
+assert not b.c.aq_inContextOf(foo)
+assert not b.c.aq_inContextOf(b.a)
+assert not b.a.aq_inContextOf('somestring')