1from PyObjCTools.TestSupport import * 2import os 3 4from Foundation import * 5 6class TestNSJavaSetup (TestCase): 7 @max_os_level('10.5') 8 def testConstants(self): 9 self.assertIsInstance(NSJavaClasses, unicode) 10 self.assertIsInstance(NSJavaRoot, unicode) 11 self.assertIsInstance(NSJavaPath, unicode) 12 self.assertIsInstance(NSJavaUserPath, unicode) 13 self.assertIsInstance(NSJavaLibraryPath, unicode) 14 self.assertIsInstance(NSJavaOwnVirtualMachine, unicode) 15 self.assertIsInstance(NSJavaPathSeparator, unicode) 16 self.assertIsInstance(NSJavaWillSetupVirtualMachineNotification, unicode) 17 self.assertIsInstance(NSJavaDidSetupVirtualMachineNotification, unicode) 18 self.assertIsInstance(NSJavaWillCreateVirtualMachineNotification, unicode) 19 self.assertIsInstance(NSJavaDidCreateVirtualMachineNotification, unicode) 20 @max_os_level('10.5') 21 def testFunctions(self): 22 v = NSJavaNeedsVirtualMachine({}) 23 self.assertIs(v, False) 24 v = NSJavaProvidesClasses({}) 25 self.assertIs(v, False) 26 v = NSJavaNeedsToLoadClasses({}) 27 self.assertIs(v, False) 28 vm = NSJavaSetup({}) 29 self.assertIsInstance(vm, objc.objc_object) 30 v = NSJavaSetupVirtualMachine() 31 self.assertIsInstance(v, objc.objc_object) 32 v = NSJavaObjectNamedInPath("java.lang.Object", None) 33 self.assertIsInstance(v, objc.objc_object) 34 v, vm = NSJavaClassesFromPath(None, ['java.lang.Object'], True, None) 35 self.assertIsInstance(v, NSArray) 36 self.assertEqual(len(v), 1) 37 self.assertIsInstance(vm, objc.objc_object) 38 v, vm = NSJavaClassesForBundle(NSBundle.mainBundle(), True, None) 39 self.assertIsInstance(v, NSArray) 40 self.assertEqual(len(v), 0) 41 self.assertIsInstance(vm, objc.objc_object) 42 vm = NSJavaBundleSetup(NSBundle.mainBundle(), {}) 43 self.assertIsInstance(vm, objc.objc_object) 44 # FIXME: NSJavaBundleCleanup gives an exception 45 # This seems to be related to the way we call these APIs and I don't 46 # plan to fix is (there is no problem with PyObjC or the Foundation 47 # wrappers) 48 fd = os.dup(2) 49 x = os.open('/dev/null', os.O_WRONLY) 50 os.dup2(x, 2) 51 os.close(x) 52 try: 53 try: 54 NSJavaBundleCleanup(NSBundle.mainBundle(), {}) 55 except ValueError: 56 pass 57 finally: 58 os.dup2(fd, 2) 59 60 61if __name__ == "__main__": 62 main() 63