summaryrefslogtreecommitdiff
path: root/src/zope/i18n/locales/tests/test_xmlfactory.py
blob: 6b52dd2b51f5de3bd4dc4eed59c9a2a52b8e1f15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
##############################################################################
#
# Copyright (c) 2002 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (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 PARTLAR PURPOSE.
#
##############################################################################
"""Testing all XML Locale functionality.
"""
import os
from unittest import TestCase, TestSuite

from zope.i18n.locales.xmlfactory import LocaleFactory
import zope.i18n


class LocaleXMLFileTestCase(TestCase):
    """This test verifies that every locale XML file can be loaded."""

    def __init__(self, path):
        self.__path = path
        TestCase.__init__(self)

    def runTest(self):
        # Loading Locale object
        LocaleFactory(self.__path)()

        # XXX: The tests below are commented out because it's not
        # necessary for the xml files to have all format definitions.

        # Making sure all number format patterns parse
        # for category in (u'decimal', u'scientific', u'percent', u'currency'):
        #    for length in getattr(locale.numbers, category+'Formats').values():
        #        for format in length.formats.values():
        #            self.assert_(parseNumberPattern(format.pattern) is not None)

        # Making sure all datetime patterns parse
        # for calendar in locale.dates.calendars.values():
        #    for category in ('date', 'time', 'dateTime'):
        #        for length in getattr(calendar, category+'Formats').values():
        #            for format in length.formats.values():
        #                self.assert_(
        #                    parseDateTimePattern(format.pattern) is not None)


def test_suite():
    suite = TestSuite()
    locale_dir = os.path.join(os.path.dirname(zope.i18n.__file__),
                              'locales', 'data')
    for path in os.listdir(locale_dir):
        if not path.endswith(".xml"):
            continue
        path = os.path.join(locale_dir, path)
        case = LocaleXMLFileTestCase(path)
        suite.addTest(case)
    return suite