1from PyObjCTools.TestSupport import *
2
3from Foundation import *
4import Foundation
5
6class TestNSBundle (TestCase):
7    def testOutput(self):
8        obj = NSBundle.mainBundle()
9
10        m = obj.preflightAndReturnError_.__metadata__()
11        self.assertTrue(m['arguments'][2]['type'].startswith(b'o^'))
12
13        m = obj.loadAndReturnError_.__metadata__()
14        self.assertTrue(m['arguments'][2]['type'].startswith(b'o^'))
15
16    def testMethods(self):
17        b = NSBundle.mainBundle()
18        # Test on an instance because NSBundle has class methods
19        # that interfere with this test
20        self.assertResultIsBOOL(b.load)
21        self.assertResultIsBOOL(b.isLoaded)
22        self.assertResultIsBOOL(b.unload)
23
24    @min_os_level('10.5')
25    def testMethods10_5(self):
26        self.assertResultIsBOOL(NSBundle.preflightAndReturnError_)
27        self.assertArgIsOut(NSBundle.preflightAndReturnError_, 0)
28        self.assertResultIsBOOL(NSBundle.loadAndReturnError_)
29        self.assertArgIsOut(NSBundle.loadAndReturnError_, 0)
30
31    def testConstants(self):
32        self.assertEqual(NSBundleExecutableArchitectureI386, 0x00000007)
33        self.assertEqual(NSBundleExecutableArchitecturePPC, 0x00000012)
34        self.assertEqual(NSBundleExecutableArchitectureX86_64, 0x01000007)
35        self.assertEqual(NSBundleExecutableArchitecturePPC64, 0x01000012)
36
37        self.assertIsInstance(NSBundleDidLoadNotification, unicode)
38        self.assertIsInstance(NSLoadedClasses, unicode)
39    def testDefines(self):
40        self.assertHasAttr(Foundation, 'NSLocalizedString')
41        self.assertHasAttr(Foundation, 'NSLocalizedStringFromTable')
42        self.assertHasAttr(Foundation, 'NSLocalizedStringFromTableInBundle')
43        self.assertHasAttr(Foundation, 'NSLocalizedStringWithDefaultValue')
44if __name__ == "__main__":
45    main()
46