1from PyObjCTools.TestSupport import *
2from CoreFoundation import *
3
4
5class TestLocale (TestCase):
6    def testTypes(self):
7        self.failUnlessIsCFType(CFLocaleRef)
8
9    def testGetTypeID(self):
10        self.failUnless(isinstance(CFLocaleGetTypeID(), (int, long)))
11
12    def testInspection(self):
13
14        locale = CFLocaleGetSystem()
15        self.failUnless(isinstance(locale, CFLocaleRef))
16
17        locale = CFLocaleCopyCurrent()
18        self.failUnless(isinstance(locale, CFLocaleRef))
19
20        idents = CFLocaleCopyAvailableLocaleIdentifiers()
21        self.failUnless(isinstance(idents, CFArrayRef))
22
23        codes = CFLocaleCopyISOLanguageCodes()
24        self.failUnless(isinstance(codes, CFArrayRef))
25
26        codes = CFLocaleCopyISOCountryCodes()
27        self.failUnless(isinstance(codes, CFArrayRef))
28
29        codes = CFLocaleCopyISOCurrencyCodes()
30        self.failUnless(isinstance(codes, CFArrayRef))
31
32
33
34        val = CFLocaleCreateCanonicalLanguageIdentifierFromString(None, "de_DE")
35        self.failUnless(isinstance(val, unicode))
36        self.failUnless(val == 'de-DE')
37
38        val = CFLocaleCreateCanonicalLocaleIdentifierFromString(None, "de_DE")
39        self.failUnless(isinstance(val, unicode))
40        self.assertEquals(val, 'de_DE')
41
42        val = CFLocaleCreateCanonicalLocaleIdentifierFromScriptManagerCodes(None, 55, 75)
43        self.failUnless(isinstance(val, unicode))
44
45        dct = CFLocaleCreateComponentsFromLocaleIdentifier(None, "nl_NL")
46        self.failUnless(dct["locale:country code"] == 'NL')
47        self.failUnless(dct["locale:language code"] == 'nl')
48
49        val = CFLocaleCreateLocaleIdentifierFromComponents(None, dct)
50        self.failUnless(isinstance(val, unicode))
51        self.assertEquals(val, 'nl_NL')
52
53        locale = CFLocaleCreate(None, "nl_NL")
54        self.failUnless(isinstance(locale, CFLocaleRef))
55
56        locale = CFLocaleCreateCopy(None, locale)
57        self.failUnless(isinstance(locale, CFLocaleRef))
58
59        ident = CFLocaleGetIdentifier(locale)
60        self.failUnless(ident == "nl_NL")
61
62        v = CFLocaleGetValue(locale, kCFLocaleDecimalSeparator)
63        self.failUnless(v == ',')
64
65        v = CFLocaleCopyDisplayNameForPropertyValue(locale, kCFLocaleIdentifier, "nl_NL")
66        self.failUnless(v is None or isinstance(v, unicode))
67        self.failUnless(v == u'Nederlands (Nederland)')
68
69
70    def testConstants(self):
71
72        self.failUnless(isinstance( kCFLocaleIdentifier, unicode))
73        self.failUnless(isinstance( kCFLocaleLanguageCode, unicode))
74        self.failUnless(isinstance( kCFLocaleCountryCode, unicode))
75        self.failUnless(isinstance( kCFLocaleScriptCode, unicode))
76        self.failUnless(isinstance( kCFLocaleVariantCode, unicode))
77        self.failUnless(isinstance( kCFLocaleExemplarCharacterSet, unicode))
78        self.failUnless(isinstance( kCFLocaleCalendarIdentifier, unicode))
79        self.failUnless(isinstance( kCFLocaleCalendar, unicode))
80        self.failUnless(isinstance( kCFLocaleCollationIdentifier, unicode))
81        self.failUnless(isinstance( kCFLocaleUsesMetricSystem, unicode))
82        self.failUnless(isinstance( kCFLocaleMeasurementSystem, unicode))
83        self.failUnless(isinstance( kCFLocaleDecimalSeparator, unicode))
84        self.failUnless(isinstance( kCFLocaleGroupingSeparator, unicode))
85        self.failUnless(isinstance( kCFLocaleCurrencySymbol, unicode))
86        self.failUnless(isinstance( kCFLocaleCurrencyCode, unicode))
87        self.failUnless(isinstance( kCFGregorianCalendar, unicode))
88        self.failUnless(isinstance( kCFBuddhistCalendar, unicode))
89        self.failUnless(isinstance( kCFChineseCalendar, unicode))
90        self.failUnless(isinstance( kCFHebrewCalendar, unicode))
91        self.failUnless(isinstance( kCFIslamicCalendar, unicode))
92        self.failUnless(isinstance( kCFIslamicCivilCalendar, unicode))
93        self.failUnless(isinstance( kCFJapaneseCalendar, unicode))
94
95    @min_os_level('10.5')
96    def testFunctions10_5(self):
97        codes = CFLocaleCopyCommonISOCurrencyCodes()
98        self.failUnless(isinstance(codes, CFArrayRef))
99
100        codes = CFLocaleCopyPreferredLanguages()
101        self.failUnless(isinstance(codes, CFArrayRef))
102
103    @min_os_level('10.5')
104    def testConstants10_5(self):
105        self.failUnless(isinstance( kCFLocaleCurrentLocaleDidChangeNotification, unicode))
106
107if __name__ == "__main__":
108    main()
109