1from PyObjCTools.TestSupport import * 2from CoreFoundation import * 3 4try: 5 unicode 6except NameError: 7 unicode = str 8 9 10try: 11 long 12except NameError: 13 long = int 14 15 16class TestLocale (TestCase): 17 def testTypes(self): 18 self.assertIsCFType(CFLocaleRef) 19 20 def testGetTypeID(self): 21 self.assertIsInstance(CFLocaleGetTypeID(), (int, long)) 22 23 def testInspection(self): 24 locale = CFLocaleGetSystem() 25 self.assertIsInstance(locale, CFLocaleRef) 26 locale = CFLocaleCopyCurrent() 27 self.assertIsInstance(locale, CFLocaleRef) 28 idents = CFLocaleCopyAvailableLocaleIdentifiers() 29 self.assertIsInstance(idents, CFArrayRef) 30 codes = CFLocaleCopyISOLanguageCodes() 31 self.assertIsInstance(codes, CFArrayRef) 32 codes = CFLocaleCopyISOCountryCodes() 33 self.assertIsInstance(codes, CFArrayRef) 34 codes = CFLocaleCopyISOCurrencyCodes() 35 self.assertIsInstance(codes, CFArrayRef) 36 val = CFLocaleCreateCanonicalLanguageIdentifierFromString(None, "de_DE") 37 self.assertIsInstance(val, unicode) 38 self.assertEqual(val , 'de-DE') 39 val = CFLocaleCreateCanonicalLocaleIdentifierFromString(None, "de_DE") 40 self.assertIsInstance(val, unicode) 41 self.assertEqual(val, 'de_DE') 42 43 val = CFLocaleCreateCanonicalLocaleIdentifierFromScriptManagerCodes(None, 55, 75) 44 self.assertIsInstance(val, unicode) 45 dct = CFLocaleCreateComponentsFromLocaleIdentifier(None, "nl_NL") 46 try: 47 # 10.6 48 self.assertEqual(dct[kCFLocaleCountryCodeKey] , 'NL') 49 self.assertEqual(dct[kCFLocaleLanguageCodeKey] , 'nl') 50 except NameError: 51 # 10.5 and earlier 52 self.assertEqual(dct["locale:country code"] , 'NL') 53 self.assertEqual(dct["locale:language code"] , 'nl') 54 val = CFLocaleCreateLocaleIdentifierFromComponents(None, dct) 55 self.assertIsInstance(val, unicode) 56 self.assertEqual(val, 'nl_NL') 57 58 locale = CFLocaleCreate(None, "nl_NL") 59 self.assertIsInstance(locale, CFLocaleRef) 60 locale = CFLocaleCreateCopy(None, locale) 61 self.assertIsInstance(locale, CFLocaleRef) 62 ident = CFLocaleGetIdentifier(locale) 63 self.assertEqual(ident , "nl_NL") 64 v = CFLocaleGetValue(locale, kCFLocaleDecimalSeparator) 65 self.assertEqual(v , ',') 66 v = CFLocaleCopyDisplayNameForPropertyValue(locale, kCFLocaleIdentifier, "nl_NL") 67 if v is not None: 68 self.assertIsInstance(v, unicode) 69 self.assertEqual(v , b'Nederlands (Nederland)'.decode('ascii')) 70 71 def testConstants(self): 72 self.assertIsInstance( kCFLocaleIdentifier, unicode) 73 self.assertIsInstance( kCFLocaleLanguageCode, unicode) 74 self.assertIsInstance( kCFLocaleCountryCode, unicode) 75 self.assertIsInstance( kCFLocaleScriptCode, unicode) 76 self.assertIsInstance( kCFLocaleVariantCode, unicode) 77 self.assertIsInstance( kCFLocaleExemplarCharacterSet, unicode) 78 self.assertIsInstance( kCFLocaleCalendarIdentifier, unicode) 79 self.assertIsInstance( kCFLocaleCalendar, unicode) 80 self.assertIsInstance( kCFLocaleCollationIdentifier, unicode) 81 self.assertIsInstance( kCFLocaleUsesMetricSystem, unicode) 82 self.assertIsInstance( kCFLocaleMeasurementSystem, unicode) 83 self.assertIsInstance( kCFLocaleDecimalSeparator, unicode) 84 self.assertIsInstance( kCFLocaleGroupingSeparator, unicode) 85 self.assertIsInstance( kCFLocaleCurrencySymbol, unicode) 86 self.assertIsInstance( kCFLocaleCurrencyCode, unicode) 87 self.assertIsInstance( kCFGregorianCalendar, unicode) 88 self.assertIsInstance( kCFBuddhistCalendar, unicode) 89 self.assertIsInstance( kCFChineseCalendar, unicode) 90 self.assertIsInstance( kCFHebrewCalendar, unicode) 91 self.assertIsInstance( kCFIslamicCalendar, unicode) 92 self.assertIsInstance( kCFIslamicCivilCalendar, unicode) 93 self.assertIsInstance( kCFJapaneseCalendar, unicode) 94 95 @min_os_level('10.5') 96 def testFunctions10_5(self): 97 codes = CFLocaleCopyCommonISOCurrencyCodes() 98 self.assertIsInstance(codes, CFArrayRef) 99 codes = CFLocaleCopyPreferredLanguages() 100 self.assertIsInstance(codes, CFArrayRef) 101 102 @min_os_level('10.5') 103 def testConstants10_5(self): 104 self.assertIsInstance( kCFLocaleCurrentLocaleDidChangeNotification, unicode) 105 106 @min_os_level('10.6') 107 def testConstants10_6(self): 108 self.assertEqual(kCFLocaleLanguageDirectionUnknown, 0) 109 self.assertEqual(kCFLocaleLanguageDirectionLeftToRight, 1) 110 self.assertEqual(kCFLocaleLanguageDirectionRightToLeft, 2) 111 self.assertEqual(kCFLocaleLanguageDirectionTopToBottom, 3) 112 self.assertEqual(kCFLocaleLanguageDirectionBottomToTop, 4) 113 114 self.assertIsInstance(kCFLocaleCollatorIdentifier, unicode) 115 self.assertIsInstance(kCFLocaleQuotationBeginDelimiterKey, unicode) 116 self.assertIsInstance(kCFLocaleQuotationEndDelimiterKey, unicode) 117 self.assertIsInstance(kCFLocaleAlternateQuotationBeginDelimiterKey, unicode) 118 self.assertIsInstance(kCFLocaleAlternateQuotationEndDelimiterKey, unicode) 119 self.assertIsInstance(kCFRepublicOfChinaCalendar, unicode) 120 self.assertIsInstance(kCFPersianCalendar, unicode) 121 self.assertIsInstance(kCFIndianCalendar, unicode) 122 self.assertIsInstance(kCFISO8601Calendar, unicode) 123 124 @min_os_level('10.6') 125 def testFunctions10_6(self): 126 v = CFLocaleGetWindowsLocaleCodeFromLocaleIdentifier('nl_NL') 127 self.assertIsInstance(v, (int, long)) 128 129 self.assertResultIsCFRetained(CFLocaleCreateLocaleIdentifierFromWindowsLocaleCode) 130 v = CFLocaleCreateLocaleIdentifierFromWindowsLocaleCode(None, 1043) 131 self.assertIsInstance(v, unicode) 132 133 v = CFLocaleGetLanguageCharacterDirection('NL') 134 self.assertEqual(v, kCFLocaleLanguageDirectionLeftToRight) 135 136 v = CFLocaleGetLanguageLineDirection('NL') 137 self.assertEqual(v, kCFLocaleLanguageDirectionTopToBottom) 138 139 140if __name__ == "__main__": 141 main() 142