1 2from PyObjCTools.TestSupport import * 3from AddressBook import * 4 5class TestABPeoplePickerC (TestCase): 6 def testConstants(self): 7 self.assertEqual(kABPickerSingleValueSelection, 1 << 0) 8 self.assertEqual(kABPickerMultipleValueSelection, 1 << 1) 9 self.assertEqual(kABPickerAllowGroupSelection, 1 << 2) 10 self.assertEqual(kABPickerAllowMultipleSelection, 1 << 3) 11 self.assertEqual(kEventClassABPeoplePicker, fourcc(b'abpp')) 12 self.assertEqual(kEventParamABPickerRef, fourcc(b'abpp')) 13 self.assertEqual(kEventABPeoplePickerGroupSelectionChanged, 1) 14 self.assertEqual(kEventABPeoplePickerNameSelectionChanged, 2) 15 self.assertEqual(kEventABPeoplePickerValueSelectionChanged, 3) 16 self.assertEqual(kEventABPeoplePickerDisplayedPropertyChanged, 4) 17 self.assertEqual(kEventABPeoplePickerGroupDoubleClicked, 5) 18 self.assertEqual(kEventABPeoplePickerNameDoubleClicked, 6) 19 20 21 def testType(self): 22 self.assertIsInstance(ABPickerRef, objc.objc_class) 23 24 def testFunctions(self): 25 self.assertResultIsCFRetained(ABPickerCreate) 26 ref = ABPickerCreate() 27 try: 28 self.assertIsInstance(ref, (ABPickerRef, objc.lookUpClass('ABPeoplePickerCAdapter'))) 29 30 except objc.error: 31 self.assertIsInstance(ref, ABPickerRef) 32 33 ABPickerSetFrame(ref, ((90, 100), (200, 400))) 34 r = ABPickerGetFrame(ref, None) 35 self.assertIsInstance(r, NSRect) 36 self.assertEqual(r, ((90, 100), (200, 400))) 37 38 self.assertResultHasType(ABPickerIsVisible, objc._C_BOOL) 39 r = ABPickerIsVisible(ref) 40 self.assertIsInstance(r, bool) 41 self.assertTrue(r is False) 42 43 self.assertArgHasType(ABPickerSetVisibility, 1, objc._C_BOOL) 44 ABPickerSetVisibility(ref, True) 45 46 r = ABPickerIsVisible(ref) 47 self.assertTrue(r is True) 48 49 ABPickerSetVisibility(ref, False) 50 51 r = ABPickerIsVisible(ref) 52 self.assertTrue(r is False) 53 54 r = ABPickerGetAttributes(ref) 55 self.assertIsInstance(r, (int, long)) 56 57 r = ABPickerChangeAttributes(ref, kABPickerAllowMultipleSelection, 0) 58 self.assertTrue(r is None) 59 60 ABPickerAddProperty(ref, kABFirstNameProperty) 61 ABPickerAddProperty(ref, kABLastNameProperty) 62 ABPickerRemoveProperty(ref, kABFirstNameProperty) 63 64 v = ABPickerCopyProperties(ref) 65 self.assertIsInstance(v, CFArrayRef) 66 67 # Disable detailed testing, the RemoveProperties function 68 # doesn't actually remove. See radar #7999195. 69 #self.assertEqual(tuple(v), (kABLastNameProperty,)) 70 71 ABPickerSetColumnTitle(ref, u"Achternaam", kABLastNameProperty) 72 v = ABPickerCopyColumnTitle(ref, kABLastNameProperty) 73 self.assertResultIsCFRetained(ABPickerCopyColumnTitle) 74 self.assertEqual(v, u"Achternaam") 75 76 ABPickerSetDisplayedProperty(ref, kABLastNameProperty) 77 v = ABPickerCopyDisplayedProperty(ref) 78 self.assertResultIsCFRetained(ABPickerCopyDisplayedProperty) 79 self.assertIsInstance(v, unicode) 80 81 v = ABPickerCopySelectedGroups(ref) 82 self.assertIsInstance(v, CFArrayRef) 83 84 v = ABPickerCopySelectedRecords(ref) 85 self.assertIsInstance(v, CFArrayRef) 86 87 v = ABPickerCopySelectedIdentifiers(ref, ABGetMe(ABGetSharedAddressBook())) 88 if v is not None: 89 self.assertIsInstance(v, CFArrayRef) 90 91 v = ABPickerCopySelectedValues(ref) 92 self.assertIsInstance(v, CFArrayRef) 93 94 grp = ABCopyArrayOfAllGroups(ABGetSharedAddressBook())[0] 95 usr = ABGetMe(ABGetSharedAddressBook()) 96 97 ABPickerSelectGroup(ref, grp, True) 98 self.assertArgHasType(ABPickerSelectGroup, 2, objc._C_BOOL) 99 100 ABPickerSelectRecord(ref, usr, False) 101 self.assertArgHasType(ABPickerSelectRecord, 2, objc._C_BOOL) 102 103 ABPickerSelectIdentifier(ref, usr, "Last", False) #ABRecordCopyUniqueId(usr), False) 104 self.assertArgHasType(ABPickerSelectIdentifier, 3, objc._C_BOOL) 105 106 ABPickerDeselectIdentifier(ref, usr, u"Last") 107 108 ABPickerDeselectGroup(ref, grp) 109 ABPickerDeselectRecord(ref, usr) 110 111 ABPickerDeselectAll(ref) 112 113 ABPickerClearSearchField(ref) 114 115 if 0: 116 # These are annoying, don't actually call 117 ABPickerEditInAddressBook(ref) 118 ABPickerSelectInAddressBook(ref) 119 else: 120 self.assertResultHasType(ABPickerEditInAddressBook, objc._C_VOID) 121 self.assertResultHasType(ABPickerSelectInAddressBook, objc._C_VOID) 122 123 r = ABPickerGetDelegate(ref) 124 125 ABPickerSetDelegate 126 127 128 129 130 131 132 133 134 135 136 137 138if __name__ == "__main__": 139 main() 140