[Zope-Checkins] CVS: Packages/ZConfig/tests - test_schema.py:1.9

Fred L. Drake, Jr. fred@zope.com
Wed, 15 Jan 2003 10:25:21 -0500


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

Modified Files:
	test_schema.py 
Log Message:
When loading a configuration, apply the keytype conversion specified by the
container.  Added corresponding test.


=== Packages/ZConfig/tests/test_schema.py 1.8 => 1.9 ===
--- Packages/ZConfig/tests/test_schema.py:1.8	Fri Jan 10 15:37:50 2003
+++ Packages/ZConfig/tests/test_schema.py	Wed Jan 15 10:25:16 2003
@@ -226,6 +226,38 @@
         self.assertEqual(conf.c, [41, 42, 43])
         self.assertEqual(conf.d, [])
 
+    def test_multikey_required(self):
+        schema = self.load_schema_text("<schema>"
+                                       "  <multikey name='k' required='yes'/>"
+                                       "</schema>")
+        self.assertRaises(ZConfig.ConfigurationError,
+                          self.load_config_text, schema, "")
+
+    def test_multisection_required(self):
+        schema = self.load_schema_text(
+            "<schema>"
+            "  <sectiontype name='s'/>"
+            "  <multisection name='*' attribute='s' type='s' required='yes'/>"
+            "</schema>")
+        self.assertRaises(ZConfig.ConfigurationError,
+                          self.load_config_text, schema, "")
+
+    def test_key_required_but_missing(self):
+        schema = self.load_schema_text("<schema>"
+                                       "  <key name='k' required='yes'/>"
+                                       "</schema>")
+        self.assertRaises(ZConfig.ConfigurationError,
+                          self.load_config_text, schema, "")
+
+    def test_section_required_but_missing(self):
+        schema = self.load_schema_text("<schema>"
+                                       "  <sectiontype name='k'/>"
+                                       "  <section name='k' type='k'"
+                                       "           required='yes'/>"
+                                       "</schema>")
+        self.assertRaises(ZConfig.ConfigurationError,
+                          self.load_config_text, schema, "")
+
     def test_key_default_element(self):
         self.assertRaises(ZConfig.SchemaError, self.load_schema_text,
                           "<schema>"
@@ -606,6 +638,24 @@
                           "  <sectiontype name='t2' extends='t1'"
                           "               keytype='integer'/>"
                           "</schema>")
+
+    def test_schema_keytype(self):
+        schema = self.load_schema_text("<schema keytype='ipaddr-or-hostname'>"
+                                       "  <key name='+' attribute='table'"
+                                       "       datatype='ipaddr-or-hostname'/>"
+                                       "</schema>")
+        conf = self.load_config_text(schema,
+                                     "host.example.com 127.0.0.1\n"
+                                     "www.example.org 127.0.0.2\n")
+        table = conf.table
+        self.assertEqual(len(table), 2)
+        L = table.items()
+        L.sort()
+        self.assertEqual(L, [("host.example.com", "127.0.0.1"),
+                             ("www.example.org", "127.0.0.2")])
+
+        self.assertRaises(ZConfig.ConfigurationError,
+                          self.load_config_text, schema, "abc.  127.0.0.1")
 
 
 def test_suite():