1from PyObjCTools.TestSupport import *
2from CoreFoundation import *
3import CoreFoundation
4
5
6class TestBase (TestCase):
7    def testConstants(self):
8        self.assertEquals(TRUE, 1)
9        self.assertEquals(FALSE, 0)
10
11        self.assertEquals(kCFCoreFoundationVersionNumber10_0,      196.40)
12        self.assertEquals(kCFCoreFoundationVersionNumber10_0_3,    196.50)
13        self.assertEquals(kCFCoreFoundationVersionNumber10_1,      226.00)
14        self.assertEquals(kCFCoreFoundationVersionNumber10_1_1,    226.00)
15        self.assertEquals(kCFCoreFoundationVersionNumber10_1_2,    227.20)
16        self.assertEquals(kCFCoreFoundationVersionNumber10_1_3,    227.20)
17        self.assertEquals(kCFCoreFoundationVersionNumber10_1_4,    227.30)
18        self.assertEquals(kCFCoreFoundationVersionNumber10_2,      263.00)
19        self.assertEquals(kCFCoreFoundationVersionNumber10_2_1,    263.10)
20        self.assertEquals(kCFCoreFoundationVersionNumber10_2_2,    263.10)
21        self.assertEquals(kCFCoreFoundationVersionNumber10_2_3,    263.30)
22        self.assertEquals(kCFCoreFoundationVersionNumber10_2_4,    263.30)
23        self.assertEquals(kCFCoreFoundationVersionNumber10_2_5,    263.50)
24        self.assertEquals(kCFCoreFoundationVersionNumber10_2_6,    263.50)
25        self.assertEquals(kCFCoreFoundationVersionNumber10_2_7,    263.50)
26        self.assertEquals(kCFCoreFoundationVersionNumber10_2_8,    263.50)
27        self.assertEquals(kCFCoreFoundationVersionNumber10_3,      299.00)
28        self.assertEquals(kCFCoreFoundationVersionNumber10_3_1,    299.00)
29        self.assertEquals(kCFCoreFoundationVersionNumber10_3_2,    299.00)
30        self.assertEquals(kCFCoreFoundationVersionNumber10_3_3,    299.30)
31        self.assertEquals(kCFCoreFoundationVersionNumber10_3_4,    299.31)
32        self.assertEquals(kCFCoreFoundationVersionNumber10_3_5,    299.31)
33        self.assertEquals(kCFCoreFoundationVersionNumber10_3_6,    299.32)
34        self.assertEquals(kCFCoreFoundationVersionNumber10_3_7,    299.33)
35        self.assertEquals(kCFCoreFoundationVersionNumber10_3_8,    299.33)
36        self.assertEquals(kCFCoreFoundationVersionNumber10_3_9,    299.35)
37        self.assertEquals(kCFCoreFoundationVersionNumber10_4,      368.00)
38        self.assertEquals(kCFCoreFoundationVersionNumber10_4_1,    368.10)
39        self.assertEquals(kCFCoreFoundationVersionNumber10_4_2,    368.11)
40        self.assertEquals(kCFCoreFoundationVersionNumber10_4_3,    368.18)
41        self.assertEquals(kCFCoreFoundationVersionNumber10_4_4_Intel,      368.26)
42        self.assertEquals(kCFCoreFoundationVersionNumber10_4_4_PowerPC,    368.25)
43        self.assertEquals(kCFCoreFoundationVersionNumber10_4_5_Intel,      368.26)
44        self.assertEquals(kCFCoreFoundationVersionNumber10_4_5_PowerPC,    368.25)
45        self.assertEquals(kCFCoreFoundationVersionNumber10_4_6_Intel,      368.26)
46        self.assertEquals(kCFCoreFoundationVersionNumber10_4_6_PowerPC,    368.25)
47        self.assertEquals(kCFCoreFoundationVersionNumber10_4_7,    368.27)
48        self.assertEquals(kCFCoreFoundationVersionNumber10_4_8,    368.27)
49        self.assertEquals(kCFCoreFoundationVersionNumber10_4_9,    368.28)
50        self.assertEquals(kCFCoreFoundationVersionNumber10_4_10,   368.28)
51        self.assertEquals(kCFCoreFoundationVersionNumber10_4_11,   368.31)
52
53        self.assertEquals(kCFCompareLessThan, -1)
54        self.assertEquals(kCFCompareEqualTo, 0)
55        self.assertEquals(kCFCompareGreaterThan, 1)
56
57        self.assertEquals(kCFNotFound, -1)
58
59
60    def testStructs(self):
61
62        o = CFRange()
63        self.failUnless(hasattr(o, 'location'))
64        self.failUnless(hasattr(o, 'length'))
65
66    def testCFRangeMake(self):
67        r = CFRangeMake(42, 99)
68        self.failUnless(isinstance(r, CFRange))
69        self.assertEquals(r.location, 42)
70        self.assertEquals(r.length, 99)
71
72    def testCFNull(self):
73        self.failUnless(isinstance(CFNullGetTypeID(), (int, long)))
74
75        self.failUnless(isinstance(kCFNull, CFNullRef))
76        self.failUnlessIsCFType(CFNullRef)
77
78    def testCFAllocator(self):
79        self.failUnlessIsCFType(CFAllocatorRef)
80
81        self.failUnless(isinstance(CFAllocatorGetTypeID(), (int, long)))
82
83        self.failUnless(isinstance(kCFAllocatorDefault, (CFAllocatorRef, type(None))))
84        self.failUnless(isinstance(kCFAllocatorSystemDefault, CFAllocatorRef))
85        self.failUnless(isinstance(kCFAllocatorMalloc, CFAllocatorRef))
86        self.failUnless(isinstance(kCFAllocatorMallocZone, CFAllocatorRef))
87        self.failUnless(isinstance(kCFAllocatorNull, CFAllocatorRef))
88        self.failUnless(isinstance(kCFAllocatorUseContext, CFAllocatorRef))
89
90        r = CFAllocatorGetDefault()
91        self.failUnless(isinstance(r, CFAllocatorRef))
92
93        CFAllocatorSetDefault(kCFAllocatorMalloc)
94        r2 = CFAllocatorGetDefault()
95        self.failUnless(isinstance(r2, CFAllocatorRef))
96        self.failUnless(r2 is kCFAllocatorMalloc)
97
98        # Restore default allocator
99        CFAllocatorSetDefault(r)
100
101        self.failIf(hasattr(CoreFoundation, 'CFAllocatorCreate'))
102        self.failIf(hasattr(CoreFoundation, 'CFAllocatorAllocate'))
103        self.failIf(hasattr(CoreFoundation, 'CFAllocatorReallocate'))
104        self.failIf(hasattr(CoreFoundation, 'CFAllocatorDeallocate'))
105        self.failIf(hasattr(CoreFoundation, 'CFAllocatorGetContext'))
106
107        r = CFAllocatorGetPreferredSizeForSize(kCFAllocatorDefault, 15, 0)
108        self.failUnless(isinstance(r, (int, long)))
109        self.failUnless(r >= 15)
110
111
112    def testGenericFunctions(self):
113        id = CFGetTypeID(kCFAllocatorMalloc)
114        self.assertEquals(id, CFAllocatorGetTypeID())
115
116        v = CFCopyTypeIDDescription(CFAllocatorGetTypeID())
117        self.failUnless(isinstance(v, unicode))
118
119        obj = CFURLCreateWithString(None, u"http://www.apple.com/", None)
120        i = CFGetRetainCount(obj)
121        self.failUnless(isinstance(i, (int, long)))
122        CFRetain(obj)
123        self.assertEquals(CFGetRetainCount(obj), i + 1)
124        CFRelease(obj)
125        self.assertEquals(CFGetRetainCount(obj), i)
126
127        CFRetain(obj)
128        CFMakeCollectable(obj)
129
130        del obj
131
132        i = CFEqual(kCFAllocatorMalloc, kCFAllocatorNull)
133        self.failUnless(i is False)
134        i = CFEqual(kCFAllocatorMalloc, kCFAllocatorMalloc)
135        self.failUnless(i is True)
136
137        i = CFHash(kCFAllocatorMalloc)
138        self.failUnless(i, (int, long))
139
140        v = CFCopyDescription(kCFAllocatorMalloc)
141        self.failUnless(isinstance(v, unicode))
142
143        v = CFGetAllocator(kCFAllocatorMalloc)
144        self.failUnless((v is None) or (isinstance(v, CFAllocatorRef)))
145
146
147if __name__ == "__main__":
148    main()
149