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