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