1from PyObjCTools.TestSupport import * 2from CoreFoundation import * 3 4 5class TestNumberFormatter (TestCase): 6 def testTypes(self): 7 self.failUnlessIsCFType(CFNumberFormatterRef) 8 9 def testTypeID(self): 10 self.failUnless(isinstance(CFNumberFormatterGetTypeID(), (int, long))) 11 12 def testFuncs(self): 13 locale = CFLocaleCopyCurrent() 14 fmt = CFNumberFormatterCreate(None, locale, kCFNumberFormatterDecimalStyle) 15 self.failUnless(isinstance(fmt, CFNumberFormatterRef)) 16 17 v = CFNumberFormatterGetLocale(fmt) 18 self.failUnless(v is locale) 19 20 v = CFNumberFormatterGetStyle(fmt) 21 self.failUnless(v == kCFNumberFormatterDecimalStyle) 22 23 v = CFNumberFormatterGetFormat(fmt) 24 self.failUnless(isinstance(v, unicode)) 25 26 CFNumberFormatterSetFormat(fmt, v[:-2]) 27 v2 = CFNumberFormatterGetFormat(fmt) 28 self.failUnless(v2 == v[:-2]) 29 30 v = CFNumberFormatterCreateStringWithNumber(None, fmt, 42.5) 31 self.failUnless(isinstance(v, unicode)) 32 self.failUnless(v == u'42.5') 33 34 num, rng = CFNumberFormatterCreateNumberFromString(None, fmt, u"42.0a", (0, 5), 0) 35 self.failUnless(num == 42.0) 36 self.failUnless(rng == (0, 4)) 37 38 num, rng = CFNumberFormatterCreateNumberFromString(None, fmt, u"42.0a", (0, 5), kCFNumberFormatterParseIntegersOnly) 39 self.failUnless(num == 42) 40 self.failUnless(rng == (0, 2)) 41 42 v = CFNumberFormatterCopyProperty(fmt, kCFNumberFormatterCurrencyCode) 43 self.failUnless(isinstance(v, unicode)) 44 45 CFNumberFormatterSetProperty(fmt, kCFNumberFormatterCurrencyCode, u"HFL") 46 47 self.failUnlessResultIsCFRetained(CFNumberFormatterCopyProperty) 48 v = CFNumberFormatterCopyProperty(fmt, kCFNumberFormatterCurrencyCode) 49 self.failUnless(v == u"HFL") 50 51 self.failUnlessArgIsOut(CFNumberFormatterGetDecimalInfoForCurrencyCode, 1) 52 self.failUnlessArgIsOut(CFNumberFormatterGetDecimalInfoForCurrencyCode, 2) 53 ok, frac, rnd = CFNumberFormatterGetDecimalInfoForCurrencyCode("EUR", None, None) 54 self.assertEquals(ok, True) 55 self.assertEquals(frac, 2) 56 self.assertEquals(rnd, 0.0) 57 58 59 60 def testConstants(self): 61 self.failUnless(kCFNumberFormatterNoStyle == 0) 62 self.failUnless(kCFNumberFormatterDecimalStyle == 1) 63 self.failUnless(kCFNumberFormatterCurrencyStyle == 2) 64 self.failUnless(kCFNumberFormatterPercentStyle == 3) 65 self.failUnless(kCFNumberFormatterScientificStyle == 4) 66 self.failUnless(kCFNumberFormatterSpellOutStyle == 5) 67 self.failUnless(kCFNumberFormatterParseIntegersOnly == 1) 68 self.failUnless(kCFNumberFormatterRoundCeiling == 0) 69 self.failUnless(kCFNumberFormatterRoundFloor == 1) 70 self.failUnless(kCFNumberFormatterRoundDown == 2) 71 self.failUnless(kCFNumberFormatterRoundUp == 3) 72 self.failUnless(kCFNumberFormatterRoundHalfEven == 4) 73 self.failUnless(kCFNumberFormatterRoundHalfDown == 5) 74 self.failUnless(kCFNumberFormatterRoundHalfUp == 6) 75 self.failUnless(kCFNumberFormatterPadBeforePrefix == 0) 76 self.failUnless(kCFNumberFormatterPadAfterPrefix == 1) 77 self.failUnless(kCFNumberFormatterPadBeforeSuffix == 2) 78 self.failUnless(kCFNumberFormatterPadAfterSuffix == 3) 79 80 self.failUnless(isinstance(kCFNumberFormatterCurrencyCode, unicode)) 81 self.failUnless(isinstance(kCFNumberFormatterDecimalSeparator, unicode)) 82 self.failUnless(isinstance(kCFNumberFormatterCurrencyDecimalSeparator, unicode)) 83 self.failUnless(isinstance(kCFNumberFormatterAlwaysShowDecimalSeparator, unicode)) 84 self.failUnless(isinstance(kCFNumberFormatterGroupingSeparator, unicode)) 85 self.failUnless(isinstance(kCFNumberFormatterUseGroupingSeparator, unicode)) 86 self.failUnless(isinstance(kCFNumberFormatterPercentSymbol, unicode)) 87 self.failUnless(isinstance(kCFNumberFormatterZeroSymbol, unicode)) 88 self.failUnless(isinstance(kCFNumberFormatterNaNSymbol, unicode)) 89 self.failUnless(isinstance(kCFNumberFormatterInfinitySymbol, unicode)) 90 self.failUnless(isinstance(kCFNumberFormatterMinusSign, unicode)) 91 self.failUnless(isinstance(kCFNumberFormatterPlusSign, unicode)) 92 self.failUnless(isinstance(kCFNumberFormatterCurrencySymbol, unicode)) 93 self.failUnless(isinstance(kCFNumberFormatterExponentSymbol, unicode)) 94 self.failUnless(isinstance(kCFNumberFormatterMinIntegerDigits, unicode)) 95 self.failUnless(isinstance(kCFNumberFormatterMaxIntegerDigits, unicode)) 96 self.failUnless(isinstance(kCFNumberFormatterMinFractionDigits, unicode)) 97 self.failUnless(isinstance(kCFNumberFormatterMaxFractionDigits, unicode)) 98 self.failUnless(isinstance(kCFNumberFormatterGroupingSize, unicode)) 99 self.failUnless(isinstance(kCFNumberFormatterSecondaryGroupingSize, unicode)) 100 self.failUnless(isinstance(kCFNumberFormatterRoundingMode, unicode)) 101 self.failUnless(isinstance(kCFNumberFormatterRoundingIncrement, unicode)) 102 self.failUnless(isinstance(kCFNumberFormatterFormatWidth, unicode)) 103 self.failUnless(isinstance(kCFNumberFormatterPaddingPosition, unicode)) 104 self.failUnless(isinstance(kCFNumberFormatterPaddingCharacter, unicode)) 105 self.failUnless(isinstance(kCFNumberFormatterDefaultFormat, unicode)) 106 self.failUnless(isinstance(kCFNumberFormatterMultiplier, unicode)) 107 self.failUnless(isinstance(kCFNumberFormatterPositivePrefix, unicode)) 108 self.failUnless(isinstance(kCFNumberFormatterPositiveSuffix, unicode)) 109 self.failUnless(isinstance(kCFNumberFormatterNegativePrefix, unicode)) 110 self.failUnless(isinstance(kCFNumberFormatterNegativeSuffix, unicode)) 111 self.failUnless(isinstance(kCFNumberFormatterPerMillSymbol, unicode)) 112 self.failUnless(isinstance(kCFNumberFormatterInternationalCurrencySymbol, unicode)) 113 114 @min_os_level('10.5') 115 def testConstants10_5(self): 116 self.failUnless(isinstance(kCFNumberFormatterCurrencyGroupingSeparator, unicode)) 117 self.failUnless(isinstance(kCFNumberFormatterIsLenient, unicode)) 118 self.failUnless(isinstance(kCFNumberFormatterUseSignificantDigits, unicode)) 119 self.failUnless(isinstance(kCFNumberFormatterMinSignificantDigits, unicode)) 120 self.failUnless(isinstance(kCFNumberFormatterMaxSignificantDigits, unicode)) 121 122 123 124 125 126if __name__ == "__main__": 127 main() 128