1from PyObjCTools.TestSupport import * 2import os 3from CoreFoundation import * 4 5try: 6 unicode 7except NameError: 8 unicode = str 9 10 11try: 12 long 13except NameError: 14 long = int 15 16 17class TestPreferences (TestCase): 18 def testGetting(self): 19 v = CFPreferencesCopyAppValue("Default Window Settings", "com.apple.Terminal") 20 self.assertIsInstance(v, unicode) 21 self.assertResultIsBOOL(CFPreferencesGetAppBooleanValue) 22 self.assertArgHasType(CFPreferencesGetAppBooleanValue, 2, b'o^Z') 23 v, valid = CFPreferencesGetAppBooleanValue("SecureKeyboardEntry", "com.apple.Terminal", None) 24 self.assertTrue(valid) 25 self.assertIsInstance(v, bool) 26 self.assertArgHasType(CFPreferencesGetAppIntegerValue, 2, b'o^Z') 27 v, valid = CFPreferencesGetAppIntegerValue("ABMetaDataChangeCount", "com.apple.AddressBook", None) 28 self.assertTrue(valid) 29 self.assertIsInstance(v, (int, long)) 30 v = CFPreferencesCopyValue("Default Window Settings", "com.apple.Terminal", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 31 self.assertIsInstance(v, unicode) 32 v = CFPreferencesCopyMultiple(None, "com.apple.Terminal", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 33 self.assertIsInstance(v, CFDictionaryRef) 34 v = CFPreferencesCopyMultiple([b"AutoFocus".decode('ascii'), b"WindowCloseAction".decode('ascii')], "com.apple.Terminal", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 35 self.assertIsInstance(v, CFDictionaryRef) 36 self.assertResultIsBOOL(CFPreferencesAppValueIsForced) 37 v = CFPreferencesAppValueIsForced("AutoFocus", "com.apple.Terminal") 38 self.assertIs(v is True or v, False) 39 40 def testSetting(self): 41 prefsFn = os.path.expanduser('~/Library/Preferences/PyObjCTest.plist') 42 if os.path.exists(prefsFn): 43 os.unlink(prefsFn) 44 45 v = CFPreferencesCopyAppValue("PyObjCTestValue", "PyObjCTest") 46 self.assertIs(v, None) 47 CFPreferencesSetAppValue("PyObjCTestValue", "value1", "PyObjCTest") 48 v = CFPreferencesCopyAppValue("PyObjCTestValue", "PyObjCTest") 49 self.assertEqual(v , "value1") 50 CFPreferencesAddSuitePreferencesToApp("PyObjCTest", kCFPreferencesCurrentApplication) 51 CFPreferencesRemoveSuitePreferencesFromApp("PyObjCTest", kCFPreferencesCurrentApplication) 52 53 ok = CFPreferencesAppSynchronize("PyObjCTest") 54 self.assertTrue(ok) 55 listing = os.listdir(os.path.dirname(prefsFn)) 56 self.assertTrue([fn for fn in listing if fn.startswith(os.path.basename(prefsFn))]) 57 58 CFPreferencesSetValue("PyObjCTestValue2", "value2", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 59 v = CFPreferencesCopyValue("PyObjCTestValue2", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 60 self.assertEqual(v , "value2") 61 CFPreferencesSetValue("PyObjCTestValue2", None, "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 62 v = CFPreferencesCopyValue("PyObjCTestValue2", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 63 self.assertIs(v, None) 64 v = CFPreferencesCopyValue("PyObjCTestValue", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 65 self.assertIsNot(v, None) 66 CFPreferencesSetMultiple({ 67 'key1': 99, 68 'key2': 42, 69 }, ["PyObjCTestValue"], "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 70 v = CFPreferencesCopyValue("PyObjCTestValue", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 71 self.assertIs(v, None) 72 v = CFPreferencesCopyValue("key2", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 73 self.assertEqual(v , 42) 74 if os.path.exists(prefsFn): 75 os.unlink(prefsFn) 76 ok = CFPreferencesSynchronize("PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 77 78 self.assertTrue(ok) 79 listing = os.listdir(os.path.dirname(prefsFn)) 80 self.assertTrue([fn for fn in listing if fn.startswith(os.path.basename(prefsFn))]) 81 82 self.assertResultIsCFRetained(CFPreferencesCopyApplicationList) 83 apps = CFPreferencesCopyApplicationList(kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 84 self.assertIsInstance(apps, CFArrayRef) 85 self.assertIn(b"com.apple.AddressBook".decode('ascii'), apps) 86 self.assertResultIsCFRetained(CFPreferencesCopyKeyList) 87 keys = CFPreferencesCopyKeyList(b"com.apple.AddressBook".decode('ascii'), kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 88 self.assertIsInstance(keys, CFArrayRef) 89 self.assertTrue(b"ABVersion".decode('ascii') in keys or b"ABNameDisplay".decode('ascii') in keys) 90 91 def testConstants(self): 92 self.assertIsInstance(kCFPreferencesAnyApplication, unicode) 93 self.assertIsInstance(kCFPreferencesCurrentApplication, unicode) 94 self.assertIsInstance(kCFPreferencesAnyHost, unicode) 95 self.assertIsInstance(kCFPreferencesCurrentHost, unicode) 96 self.assertIsInstance(kCFPreferencesAnyUser, unicode) 97 self.assertIsInstance(kCFPreferencesCurrentUser, unicode) 98 99if __name__ == "__main__": 100 main() 101