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.failUnless(isinstance(v, unicode)) 10 11 self.failUnlessResultIsBOOL(CFPreferencesGetAppBooleanValue) 12 self.failUnlessArgHasType(CFPreferencesGetAppBooleanValue, 2, 'o^Z') 13 v, valid = CFPreferencesGetAppBooleanValue("AutoFocus", "com.apple.Terminal", None) 14 self.failUnless(valid) 15 self.failUnless(isinstance(v, bool)) 16 17 self.failUnlessArgHasType(CFPreferencesGetAppIntegerValue, 2, 'o^Z') 18 v, valid = CFPreferencesGetAppIntegerValue("WindowCloseAction", "com.apple.Terminal", None) 19 self.failUnless(valid) 20 self.failUnless(isinstance(v, (int, long))) 21 22 v = CFPreferencesCopyValue("WindowCloseAction", "com.apple.Terminal", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 23 self.failUnless(isinstance(v, unicode)) 24 25 26 v = CFPreferencesCopyMultiple(None, "com.apple.Terminal", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 27 self.failUnless(isinstance(v, CFDictionaryRef)) 28 29 v = CFPreferencesCopyMultiple([u"AutoFocus", u"WindowCloseAction"], "com.apple.Terminal", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 30 self.failUnless(isinstance(v, CFDictionaryRef)) 31 32 self.failUnlessResultIsBOOL(CFPreferencesAppValueIsForced) 33 v = CFPreferencesAppValueIsForced("AutoFocus", "com.apple.Terminal") 34 self.failUnless(v is True or v is False) 35 36 def testSetting(self): 37 prefsFn = os.path.expanduser('~/Library/Preferences/PyObjCTest.plist') 38 if os.path.exists(prefsFn): 39 os.unlink(prefsFn) 40 41 v = CFPreferencesCopyAppValue("PyObjCTestValue", "PyObjCTest") 42 self.failUnless(v is None) 43 44 CFPreferencesSetAppValue("PyObjCTestValue", "value1", "PyObjCTest") 45 v = CFPreferencesCopyAppValue("PyObjCTestValue", "PyObjCTest") 46 self.failUnless(v == "value1") 47 48 CFPreferencesAddSuitePreferencesToApp("PyObjCTest", kCFPreferencesCurrentApplication) 49 CFPreferencesRemoveSuitePreferencesFromApp("PyObjCTest", kCFPreferencesCurrentApplication) 50 51 ok = CFPreferencesAppSynchronize("PyObjCTest") 52 self.failUnless(ok) 53 self.failUnless(os.path.exists(prefsFn)) 54 os.unlink(prefsFn) 55 56 CFPreferencesSetValue("PyObjCTestValue2", "value2", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 57 v = CFPreferencesCopyValue("PyObjCTestValue2", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 58 self.failUnless(v == "value2") 59 60 CFPreferencesSetValue("PyObjCTestValue2", None, "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 61 v = CFPreferencesCopyValue("PyObjCTestValue2", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 62 self.failUnless(v is None) 63 64 v = CFPreferencesCopyValue("PyObjCTestValue", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 65 self.failUnless(v is not None) 66 CFPreferencesSetMultiple({ 67 'key1': 99, 68 'key2': 42, 69 }, ["PyObjCTestValue"], "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 70 v = CFPreferencesCopyValue("PyObjCTestValue", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 71 self.failUnless(v is None) 72 v = CFPreferencesCopyValue("key2", "PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 73 self.failUnless(v == 42) 74 75 if os.path.exists(prefsFn): 76 os.unlink(prefsFn) 77 ok = CFPreferencesSynchronize("PyObjCTest", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 78 self.failUnless(ok) 79 self.failUnless(os.path.exists(prefsFn)) 80 os.unlink(prefsFn) 81 82 self.failUnlessResultIsCFRetained(CFPreferencesCopyApplicationList) 83 apps = CFPreferencesCopyApplicationList(kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 84 self.failUnless(isinstance(apps, CFArrayRef)) 85 self.failUnless(u"com.apple.AddressBook" in apps) 86 87 self.failUnlessResultIsCFRetained(CFPreferencesCopyKeyList) 88 keys = CFPreferencesCopyKeyList(u"com.apple.AddressBook", kCFPreferencesCurrentUser, kCFPreferencesAnyHost) 89 self.failUnless(isinstance(keys, CFArrayRef)) 90 self.failUnless(u"ABNameSorting" in keys) 91 92 def testConstants(self): 93 self.failUnless(isinstance(kCFPreferencesAnyApplication, unicode)) 94 self.failUnless(isinstance(kCFPreferencesCurrentApplication, unicode)) 95 self.failUnless(isinstance(kCFPreferencesAnyHost, unicode)) 96 self.failUnless(isinstance(kCFPreferencesCurrentHost, unicode)) 97 self.failUnless(isinstance(kCFPreferencesAnyUser, unicode)) 98 self.failUnless(isinstance(kCFPreferencesCurrentUser, unicode)) 99 100 101if __name__ == "__main__": 102 main() 103