[Zope-Checkins] CVS: Zope/lib/python/Products/PageTemplates/tests - __init__.py:1.2.4.1 testDTMLTests.py:1.7.4.1 testExpressions.py:1.9.4.1 testTALES.py:1.4.4.2

Chris McDonough chrism@zope.com
Sat, 28 Sep 2002 21:41:04 -0400


Update of /cvs-repository/Zope/lib/python/Products/PageTemplates/tests
In directory cvs.zope.org:/tmp/cvs-serv16902/lib/python/Products/PageTemplates/tests

Modified Files:
      Tag: chrism-install-branch
	__init__.py testDTMLTests.py testExpressions.py testTALES.py 
Log Message:
Merge chrism-install-branch with head.  Apologies for the spew.


=== Zope/lib/python/Products/PageTemplates/tests/__init__.py 1.2 => 1.2.4.1 ===
--- Zope/lib/python/Products/PageTemplates/tests/__init__.py:1.2	Wed Aug 14 18:17:24 2002
+++ Zope/lib/python/Products/PageTemplates/tests/__init__.py	Sat Sep 28 21:40:33 2002
@@ -34,3 +34,4 @@
         assert aargs == args, "Harness method arguments"
         assert akwargs == kwargs, "Harness method keyword args"
         return result
+    


=== Zope/lib/python/Products/PageTemplates/tests/testDTMLTests.py 1.7 => 1.7.4.1 ===
--- Zope/lib/python/Products/PageTemplates/tests/testDTMLTests.py:1.7	Wed Aug 14 18:17:24 2002
+++ Zope/lib/python/Products/PageTemplates/tests/testDTMLTests.py	Sat Sep 28 21:40:33 2002
@@ -140,3 +140,4 @@
 
 if __name__=='__main__':
     main()
+


=== Zope/lib/python/Products/PageTemplates/tests/testExpressions.py 1.9 => 1.9.4.1 ===
--- Zope/lib/python/Products/PageTemplates/tests/testExpressions.py:1.9	Wed Aug 14 18:17:24 2002
+++ Zope/lib/python/Products/PageTemplates/tests/testExpressions.py	Sat Sep 28 21:40:33 2002
@@ -4,9 +4,20 @@
 
 class ExpressionTests(unittest.TestCase):
 
+    def setUp(self):
+        self.e = e = Expressions.getEngine()
+        self.ec = e.getContext(
+            one = 1,
+            d = {'one': 1, 'b': 'b', '': 'blank', '_': 'under'},
+            blank = '',
+            )
+
+    def tearDown(self):
+        del self.e, self.ec
+
     def testCompile(self):
         '''Test expression compilation'''
-        e = Expressions.getEngine()
+        e = self.e
         for p in ('x', 'x/y', 'x/y/z'):
             e.compile(p)
         e.compile('path:a|b|c/d/e')
@@ -15,6 +26,31 @@
         e.compile('string:a ${x/y} b ${y/z} c')
         e.compile('python: 2 + 2')
         e.compile('python: 2 \n+\n 2\n')
+
+    def testSimpleEval(self):
+        '''Test simple expression evaluation'''
+        ec = self.ec
+        assert ec.evaluate('one') == 1
+        assert ec.evaluate('d/one') == 1
+        assert ec.evaluate('d/b') == 'b'
+
+    def testEval1(self):
+        '''Test advanced expression evaluation 1'''
+        ec = self.ec
+        assert ec.evaluate('x | nothing') is None
+        assert ec.evaluate('d/') == 'blank'
+        assert ec.evaluate('d/_') == 'under'
+        assert ec.evaluate('d/ | nothing') == 'blank'
+        assert ec.evaluate('d/?blank') == 'blank'
+
+    def testHybrid(self):
+        '''Test hybrid path expressions'''
+        ec = self.ec
+        assert ec.evaluate('x | python:1+1') == 2
+        assert ec.evaluate('x | python:int') == int
+        assert ec.evaluate('x | string:x') == 'x'
+        assert ec.evaluate('x | string:$one') == '1'
+        assert ec.evaluate('x | not:exists:x')
 
 def test_suite():
     return unittest.makeSuite(ExpressionTests)


=== Zope/lib/python/Products/PageTemplates/tests/testTALES.py 1.4.4.1 => 1.4.4.2 ===
--- Zope/lib/python/Products/PageTemplates/tests/testTALES.py:1.4.4.1	Tue Sep  3 03:43:46 2002
+++ Zope/lib/python/Products/PageTemplates/tests/testTALES.py	Sat Sep 28 21:40:33 2002
@@ -4,6 +4,16 @@
 from Products.PageTemplates.tests import harness1
 import string
 
+class DummyUnicodeExpr:
+    '''Dummy expression type handler returning unicode'''
+    def __init__(self, name, expr, engine):
+        self._name = name
+        self._expr = expr
+    def __call__(self, econtext):
+        return unicode(self._expr, 'latin1')
+    def __repr__(self):
+        return '<SimpleExpr %s %s>' % (self._name, `self._expr`)
+
 class TALESTests(unittest.TestCase):
 
     def testIterator0(self):
@@ -77,6 +87,7 @@
     def getContext(self, **kws):
         e = TALES.Engine()
         e.registerType('simple', TALES.SimpleExpr)
+        e.registerType('unicode', DummyUnicodeExpr)
         return apply(e.getContext, (), kws)
 
     def testContext0(self):
@@ -84,6 +95,11 @@
         se = self.getContext().evaluate('simple:x')
         assert se == ('simple', 'x'), (
             'Improperly evaluated expression %s.' % `se`)
+
+    def testContextUnicode(self):
+        '''Test evaluateText on unicode-returning expressions'''
+        se = self.getContext().evaluateText('unicode:\xe9')
+        self.assertEqual(se, u'\xe9')
 
     def testVariables(self):
         '''Test variables'''