[Zope-CVS] CVS: Packages/ZConfig/tests - testInterp.py:1.2

Fred L. Drake, Jr. fdrake@acm.org
Wed, 9 Oct 2002 12:30:32 -0400


Update of /cvs-repository/Packages/ZConfig/tests
In directory cvs.zope.org:/tmp/cvs-serv4882/tests

Modified Files:
	testInterp.py 
Log Message:
Proposed interface for nested interpolation.

=== Packages/ZConfig/tests/testInterp.py 1.1 => 1.2 ===
--- Packages/ZConfig/tests/testInterp.py:1.1	Wed Oct  9 11:33:53 2002
+++ Packages/ZConfig/tests/testInterp.py	Wed Oct  9 12:30:31 2002
@@ -2,7 +2,9 @@
 
 import unittest
 
-from ZConfig.Interpolation import interpolate, InterpolationSyntaxError
+from ZConfig.Interpolation import get, interpolate
+from ZConfig.Interpolation import InterpolationRecursionError
+from ZConfig.Interpolation import InterpolationSyntaxError
 
 
 class InterpolationTestCase(unittest.TestCase):
@@ -51,6 +53,30 @@
     def test_non_nesting(self):
         d = {"name": "$value"}
         self.assertEqual(interpolate("$name", d), "$value")
+
+    def test_simple_nesting(self):
+        d = {"name": "value",
+             "nest": "$splat",
+             "splat": "nested"}
+        def check(name, value):
+            self.assertEqual(get(d, name), value)
+        check("name", "value")
+        check("nest", "nested")
+
+    def test_nesting_errors(self):
+        d = {"name": "$splat",
+             "splat": "$foo",
+             "foo": "$"}
+        self.assertRaises(InterpolationSyntaxError,
+                          get, d, "name")
+        d = {"name": "$splat",
+             "splat": "$name"}
+        self.assertRaises(InterpolationRecursionError,
+                          get, d, "name")
+        d = {"name": "$splat",
+             "splat": "$splat"}
+        self.assertRaises(InterpolationRecursionError,
+                          get, d, "name")
 
 
 def test_suite():