[Zope3-checkins] CVS: Packages/ZConfig/tests - test_schema.py:1.1.2.1

Fred L. Drake, Jr. fred@zope.com
Wed, 11 Dec 2002 15:10:53 -0500


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

Added Files:
      Tag: zconfig-schema-devel-branch
	test_schema.py 
Log Message:
Some preliminary tests of the schema support.

=== Added File Packages/ZConfig/tests/test_schema.py ===
##############################################################################
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Tests of ZConfig schemas."""

import unittest
import urlparse

import ZConfig

from ZConfig.loader import ConfigLoader
from ZConfig.tests.test_config import CONFIG_BASE


class SchemaTestCase(unittest.TestCase):
    def load(self, relurl):
        self.url = urlparse.urljoin(CONFIG_BASE, relurl)
        self.schema = ZConfig.loadSchema(self.url)
        self.assert_(self.schema.issection())
        return self.schema

    def loadBoth(self, schema_url, conf_url):
        schema = self.load(schema_url)
        conf_url = urlparse.urljoin(CONFIG_BASE, conf_url)
        conf = ConfigLoader(schema).loadURL(conf_url)
        return schema, conf

    def test_minimal_schema(self):
        schema = self.load("minimal.xml")
        self.assertEqual(len(schema), 0)
        self.assertEqual(schema.getchildnames(), [])
        self.assertRaises(IndexError,
                          lambda schema=schema: schema[0])
        self.assertRaises(ZConfig.ConfigurationError,
                          schema.getinfo, "foo")

    def test_simple(self):
        schema, conf = self.loadBoth("simple.xml", "simple.conf")
        eq = self.assertEqual
        eq(conf.var1, 'abc')
        eq(conf.int_var, 12)
        eq(conf.float_var, 12.02)
        eq(conf.neg_int, -2)

        check = self.assert_
        check(conf.true_var_1)
        check(conf.true_var_2)
        check(conf.true_var_3)
        check(not conf.false_var_1)
        check(not conf.false_var_2)
        check(not conf.false_var_3)


def test_suite():
    return unittest.makeSuite(SchemaTestCase)

if __name__ == '__main__':
    unittest.main(defaultTest='test_suite')