1'''
2Some simple tests to check that the framework is properly wrapped.
3'''
4import objc
5from PyObjCTools.TestSupport import *
6import Foundation
7import os
8
9try:
10    long
11except NameError:
12    long = int
13
14
15class TestFoundation (TestCase):
16    def testValues(self):
17        self.assert_( hasattr(Foundation, 'NSTimeIntervalSince1970') )
18        self.assert_( isinstance(Foundation.NSTimeIntervalSince1970, float) )
19        self.assertEqual(Foundation.NSTimeIntervalSince1970, 978307200.0)
20
21        if int(os.uname()[2].split('.')[0]) < 9:
22            self.assert_( hasattr(Foundation, 'NSMaximumStringLength') )
23            self.assert_( isinstance(Foundation.NSMaximumStringLength, (int, long)) )
24        self.assert_( hasattr(Foundation, 'NSURLResponseUnknownLength') )
25        self.assert_( isinstance(Foundation.NSURLResponseUnknownLength, (int, long)) )
26
27    def testFunctions(self):
28        self.assert_( hasattr(Foundation, 'NSStringFromSelector') )
29
30    def testProtocols(self):
31        self.assert_( hasattr(Foundation, 'protocols') )
32
33        for nm in [
34                'NSArchiverCallback',
35                'NSClassDescriptionPrimitives',
36                'NSComparisonMethods',
37                #'NSConnectionDelegateMethods',
38                'NSCopyLinkMoveHandler',
39                'NSDelayedPerforming',
40                #'NSDistantObjectRequestMethods',
41                'NSDistributedObjects',
42                'NSErrorRecoveryAttempting',
43                'NSKeyValueCoding',
44                'NSKeyValueObserverNotification',
45                'NSKeyValueObserverRegistration',
46                'NSKeyValueObserving',
47                'NSKeyValueObservingCustomization',
48                #'NSKeyedArchiverDelegate',
49                'NSKeyedArchiverObjectSubstitution',
50            ]:
51
52            self.assert_( hasattr(Foundation.protocols, nm), 'protocol %s'%(nm,))
53            self.assert_( isinstance(getattr(Foundation.protocols, nm), objc.informal_protocol) )
54
55    def test_structs(self):
56        self.assert_( hasattr(Foundation, 'NSPoint') )
57        o = Foundation.NSPoint()
58        self.assert_( hasattr(o, 'x') )
59        self.assert_( hasattr(o, 'y') )
60
61        self.assert_( hasattr(Foundation, 'NSSize') )
62        o = Foundation.NSSize()
63        self.assert_( hasattr(o, 'width') )
64        self.assert_( hasattr(o, 'height') )
65
66        self.assert_( hasattr(Foundation, 'NSRange') )
67        o = Foundation.NSRange()
68        self.assert_( hasattr(o, 'location') )
69        self.assert_( hasattr(o, 'length') )
70
71        self.assert_( hasattr(Foundation, 'NSRect') )
72        o = Foundation.NSRect()
73        self.assert_( hasattr(o, 'origin') )
74        self.assert_( hasattr(o, 'size') )
75        self.assert_( isinstance(o.origin, Foundation.NSPoint) )
76        self.assert_( isinstance(o.size, Foundation.NSSize) )
77
78        self.assert_( hasattr(Foundation, 'NSAffineTransformStruct') )
79        o = Foundation.NSAffineTransformStruct()
80        self.assert_( hasattr(o, 'm11') )
81        self.assert_( hasattr(o, 'm12') )
82        self.assert_( hasattr(o, 'm21') )
83        self.assert_( hasattr(o, 'm22') )
84        self.assert_( hasattr(o, 'tX') )
85        self.assert_( hasattr(o, 'tY') )
86
87
88if __name__ == "__main__":
89    main()
90