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