1from PyObjCTools.TestSupport import *
2from CoreFoundation import *
3
4
5class TestDateFormatter (TestCase):
6    def testTypeID(self):
7        self.failUnless(isinstance(CFDateGetTypeID(), (int, long)))
8
9    def testConstants(self):
10        self.failUnless(kCFDateFormatterNoStyle == 0)
11        self.failUnless(kCFDateFormatterShortStyle == 1)
12        self.failUnless(kCFDateFormatterMediumStyle == 2)
13        self.failUnless(kCFDateFormatterLongStyle == 3)
14        self.failUnless(kCFDateFormatterFullStyle == 4)
15
16        self.failUnless( isinstance( kCFDateFormatterIsLenient, unicode))
17        self.failUnless( isinstance( kCFDateFormatterTimeZone, unicode))
18        self.failUnless( isinstance( kCFDateFormatterCalendarName, unicode))
19        self.failUnless( isinstance( kCFDateFormatterDefaultFormat, unicode))
20        self.failUnless( isinstance( kCFDateFormatterTwoDigitStartDate, unicode))
21        self.failUnless( isinstance( kCFDateFormatterDefaultDate, unicode))
22        self.failUnless( isinstance( kCFDateFormatterCalendar, unicode))
23        self.failUnless( isinstance( kCFDateFormatterEraSymbols, unicode))
24        self.failUnless( isinstance( kCFDateFormatterMonthSymbols, unicode))
25        self.failUnless( isinstance( kCFDateFormatterShortMonthSymbols, unicode))
26        self.failUnless( isinstance( kCFDateFormatterWeekdaySymbols, unicode))
27        self.failUnless( isinstance( kCFDateFormatterShortWeekdaySymbols, unicode))
28        self.failUnless( isinstance( kCFDateFormatterAMSymbol, unicode))
29        self.failUnless( isinstance( kCFDateFormatterPMSymbol, unicode))
30        self.failUnless( isinstance( kCFDateFormatterLongEraSymbols, unicode))
31        self.failUnless( isinstance( kCFDateFormatterVeryShortMonthSymbols, unicode))
32        self.failUnless( isinstance( kCFDateFormatterStandaloneMonthSymbols, unicode))
33        self.failUnless( isinstance( kCFDateFormatterShortStandaloneMonthSymbols, unicode))
34        self.failUnless( isinstance( kCFDateFormatterVeryShortStandaloneMonthSymbols, unicode))
35        self.failUnless( isinstance( kCFDateFormatterVeryShortWeekdaySymbols, unicode))
36        self.failUnless( isinstance( kCFDateFormatterStandaloneWeekdaySymbols, unicode))
37        self.failUnless( isinstance( kCFDateFormatterShortStandaloneWeekdaySymbols, unicode))
38        self.failUnless( isinstance( kCFDateFormatterVeryShortStandaloneWeekdaySymbols, unicode))
39        self.failUnless( isinstance( kCFDateFormatterQuarterSymbols, unicode))
40        self.failUnless( isinstance( kCFDateFormatterShortQuarterSymbols, unicode))
41        self.failUnless( isinstance( kCFDateFormatterStandaloneQuarterSymbols, unicode))
42        self.failUnless( isinstance( kCFDateFormatterShortStandaloneQuarterSymbols, unicode))
43        self.failUnless( isinstance( kCFDateFormatterGregorianStartDate, unicode))
44
45    def testTypes(self):
46        self.failUnlessIsCFType(CFDateFormatterRef)
47
48    def testInspection(self):
49        locale = CFLocaleCopyCurrent()
50        self.failUnlessIsInstance(locale, CFLocaleRef)
51
52        date = CFDateCreate(None, CFAbsoluteTimeGetCurrent())
53        self.failUnlessIsInstance(date, CFDateRef)
54
55        self.failUnlessResultIsCFRetained(CFDateFormatterCreate)
56        fmt = CFDateFormatterCreate(None, locale, kCFDateFormatterShortStyle, kCFDateFormatterLongStyle)
57        self.failUnless(isinstance(fmt, CFDateFormatterRef))
58
59        v = CFDateFormatterGetLocale(fmt)
60        self.assertEquals(CFLocaleGetIdentifier(locale), CFLocaleGetIdentifier(v))
61
62        v = CFDateFormatterGetDateStyle(fmt)
63        self.assertEquals(v, kCFDateFormatterShortStyle)
64
65        v = CFDateFormatterGetTimeStyle(fmt)
66        self.assertEquals(v, kCFDateFormatterLongStyle)
67
68        v = CFDateFormatterGetFormat(fmt)
69        self.failUnless(isinstance(v, unicode))
70
71        CFDateFormatterSetFormat(fmt, v[:-1])
72        v2 = CFDateFormatterGetFormat(fmt)
73        self.assertEquals(v[:-1], v2)
74
75        v = CFDateFormatterCreateStringWithDate(None, fmt, date)
76        self.failUnless(isinstance(v, unicode))
77
78        v = CFDateFormatterCreateStringWithAbsoluteTime(None, fmt, CFAbsoluteTimeGetCurrent())
79        self.failUnless(isinstance(v, unicode))
80
81        dt, rng = CFDateFormatterCreateDateFromString(None, fmt, v, (0, len(v)))
82        self.failUnless(isinstance(dt, CFDateRef))
83        self.failUnless(isinstance(rng, CFRange))
84
85        ok, rng, abstime = CFDateFormatterGetAbsoluteTimeFromString(fmt, v, (0, len(v)), None)
86        self.failUnless(ok is True)
87        self.failUnless(isinstance(rng, CFRange))
88        self.failUnless(isinstance(abstime, float))
89
90        self.failUnlessResultIsCFRetained(CFDateFormatterCopyProperty)
91        v = CFDateFormatterCopyProperty(fmt, kCFDateFormatterCalendarName)
92        self.failUnless(isinstance(v, unicode))
93
94        CFDateFormatterSetProperty(fmt, kCFDateFormatterCalendarName, u"samba")
95        v = CFDateFormatterCopyProperty(fmt, kCFDateFormatterCalendarName)
96        self.failUnless(isinstance(v, unicode))
97        self.failUnless(v == u"samba")
98
99        v = CFDateFormatterCopyProperty(fmt, kCFDateFormatterIsLenient)
100        self.failUnless(v is True or v is False)
101
102        CFDateFormatterSetProperty(fmt, kCFDateFormatterIsLenient, True)
103        v2 = CFDateFormatterCopyProperty(fmt, kCFDateFormatterIsLenient)
104        self.failUnless(v2 is True)
105
106
107if __name__ == "__main__":
108    main()
109