[Zodb-checkins] CVS: Packages/ZConfig/tests - test_schema.py:1.1.2.6

Fred L. Drake, Jr. fred@zope.com
Wed, 11 Dec 2002 22:13:25 -0500


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

Modified Files:
      Tag: zconfig-schema-devel-branch
	test_schema.py 
Log Message:
Add a test of application-defined section types.


=== Packages/ZConfig/tests/test_schema.py 1.1.2.5 => 1.1.2.6 ===
--- Packages/ZConfig/tests/test_schema.py:1.1.2.5	Wed Dec 11 17:38:49 2002
+++ Packages/ZConfig/tests/test_schema.py	Wed Dec 11 22:13:25 2002
@@ -27,6 +27,15 @@
     def convert(self, value):
         return str(value).upper()
 
+class appsection:
+    def convert(self, value):
+        return MySection(value)
+
+class MySection:
+    def __init__(self, value):
+        self.conf = value
+        self.length = len(value)
+
 
 class SchemaTestCase(unittest.TestCase):
 
@@ -86,6 +95,28 @@
         eq(conf.b, 'ABC')
         eq(conf.c, ['UPP', 'ER', 'CASE'])
         eq(conf.d, ['NOT', 'LOWER', 'CASE'])
+
+    def test_app_sectiontype(self):
+        schema = self.load_schema_text(
+            "<schema>"
+            "  <section names='sect' type='%s.appsection'"
+            "           sectiontype='foo'>"
+            "    <key name='sample' type='integer'>"
+            "      <default>345</default>"
+            "      </key>"
+            "    </section>"
+            "</schema>"
+            % __name__)
+        conf = self.load_config_text(schema,
+                                     "<foo sect>\n"
+                                     "  sample 42\n"
+                                     "</foo>")
+        self.assertEqual(len(conf), 1)
+        o1 = conf[0]
+        self.assert_(isinstance(o1, MySection))
+        self.assertEqual(o1.length, 1)
+        self.assertEqual(o1.conf.sample, 42)
+        self.assert_(isinstance(conf.sect, MySection))
 
     def test_multivalued_keys(self):
         schema = self.load_schema_text(