1from PyObjCTools.TestSupport import *
2import objc
3
4from AppKit import *
5
6try:
7    unicode
8except NameError:
9    unicode = str
10
11class TestNSCell(TestCase):
12    def testUnicode(self):
13        u = b'\xc3\xbc\xc3\xb1\xc3\xae\xc3\xa7\xc3\xb8d\xc3\xa8'.decode('latin1')
14        cell = NSCell.alloc().initTextCell_(u)
15        cell.setStringValue_(u)
16        self.assertEqual(cell.stringValue(), u)
17
18    def testInt(self):
19        i = 17
20        cell = NSCell.alloc().initTextCell_(b"".decode('ascii'))
21        cell.setIntValue_(i)
22        self.assertEqual(cell.intValue(), i)
23
24    def testFloat(self):
25        f = 3.125
26        cell = NSCell.alloc().initTextCell_(b"".decode('ascii'))
27        cell.setFloatValue_(f)
28        self.assertEqual(cell.floatValue(), f)
29
30    def testMethods(self):
31        self.assertResultIsBOOL(NSCell.prefersTrackingUntilMouseUp)
32        self.assertResultIsBOOL(NSCell.isOpaque)
33        self.assertResultIsBOOL(NSCell.isEnabled)
34        self.assertArgIsBOOL(NSCell.setEnabled_, 0)
35        self.assertResultIsBOOL(NSCell.isContinuous)
36        self.assertArgIsBOOL(NSCell.setContinuous_, 0)
37        self.assertResultIsBOOL(NSCell.isEditable)
38        self.assertArgIsBOOL(NSCell.setEditable_, 0)
39        self.assertResultIsBOOL(NSCell.isSelectable)
40        self.assertArgIsBOOL(NSCell.setSelectable_, 0)
41        self.assertResultIsBOOL(NSCell.isBordered)
42        self.assertArgIsBOOL(NSCell.setBordered_, 0)
43        self.assertResultIsBOOL(NSCell.isBezeled)
44        self.assertArgIsBOOL(NSCell.setBezeled_, 0)
45        self.assertResultIsBOOL(NSCell.isScrollable)
46        self.assertArgIsBOOL(NSCell.setScrollable_, 0)
47        self.assertResultIsBOOL(NSCell.isHighlighted)
48        self.assertArgIsBOOL(NSCell.setHighlighted_, 0)
49        self.assertResultIsBOOL(NSCell.wraps)
50        self.assertArgIsBOOL(NSCell.setWraps_, 0)
51        self.assertResultIsBOOL(NSCell.isEntryAcceptable_)
52        self.assertArgIsBOOL(NSCell.setFloatingPointFormat_left_right_, 0)
53        self.assertResultIsBOOL(NSCell.hasValidObjectValue)
54        self.assertArgIsBOOL(NSCell.highlight_withFrame_inView_, 0)
55        self.assertArgIsOut(NSCell.getPeriodicDelay_interval_, 0)
56        self.assertArgIsOut(NSCell.getPeriodicDelay_interval_, 1)
57        self.assertResultIsBOOL(NSCell.startTrackingAt_inView_)
58        self.assertResultIsBOOL(NSCell.continueTracking_at_inView_)
59        self.assertArgIsBOOL(NSCell.stopTracking_at_inView_mouseIsUp_, 3)
60        self.assertResultIsBOOL(NSCell.trackMouse_inRect_ofView_untilMouseUp_)
61        self.assertArgIsBOOL(NSCell.trackMouse_inRect_ofView_untilMouseUp_, 3)
62        self.assertResultIsBOOL(NSCell.sendsActionOnEndEditing)
63        self.assertArgIsBOOL(NSCell.setSendsActionOnEndEditing_, 0)
64        self.assertResultIsBOOL(NSCell.allowsUndo)
65        self.assertArgIsBOOL(NSCell.setAllowsUndo_, 0)
66        self.assertResultIsBOOL(NSCell.truncatesLastVisibleLine)
67        self.assertArgIsBOOL(NSCell.setTruncatesLastVisibleLine_, 0)
68        self.assertResultIsBOOL(NSCell.refusesFirstResponder)
69        self.assertArgIsBOOL(NSCell.setRefusesFirstResponder_, 0)
70        self.assertResultIsBOOL(NSCell.acceptsFirstResponder)
71        self.assertResultIsBOOL(NSCell.showsFirstResponder)
72        self.assertArgIsBOOL(NSCell.setShowsFirstResponder_, 0)
73        self.assertResultIsBOOL(NSCell.wantsNotificationForMarkedText)
74        self.assertResultIsBOOL(NSCell.allowsEditingTextAttributes)
75        self.assertArgIsBOOL(NSCell.setAllowsEditingTextAttributes_, 0)
76        self.assertResultIsBOOL(NSCell.importsGraphics)
77        self.assertArgIsBOOL(NSCell.setImportsGraphics_, 0)
78        self.assertResultIsBOOL(NSCell.allowsMixedState)
79        self.assertArgIsBOOL(NSCell.setAllowsMixedState_, 0)
80
81
82    def testFunctions(self):
83        self.assertArgIsBOOL(NSDrawThreePartImage, 4)
84        self.assertArgIsBOOL(NSDrawThreePartImage, 7)
85        self.assertArgIsBOOL(NSDrawNinePartImage, 12)
86
87    def testConstants(self):
88        self.assertIsInstance(NSControlTintDidChangeNotification, unicode)
89
90        self.assertEqual(NSAnyType, 0)
91        self.assertEqual(NSIntType, 1)
92        self.assertEqual(NSPositiveIntType, 2)
93        self.assertEqual(NSFloatType, 3)
94        self.assertEqual(NSPositiveFloatType, 4)
95        self.assertEqual(NSDoubleType, 6)
96        self.assertEqual(NSPositiveDoubleType, 7)
97        self.assertEqual(NSNullCellType, 0)
98        self.assertEqual(NSTextCellType, 1)
99        self.assertEqual(NSImageCellType, 2)
100        self.assertEqual(NSCellDisabled, 0)
101        self.assertEqual(NSCellState, 1)
102        self.assertEqual(NSPushInCell, 2)
103        self.assertEqual(NSCellEditable, 3)
104        self.assertEqual(NSChangeGrayCell, 4)
105        self.assertEqual(NSCellHighlighted, 5)
106        self.assertEqual(NSCellLightsByContents, 6)
107        self.assertEqual(NSCellLightsByGray, 7)
108        self.assertEqual(NSChangeBackgroundCell, 8)
109        self.assertEqual(NSCellLightsByBackground, 9)
110        self.assertEqual(NSCellIsBordered, 10)
111        self.assertEqual(NSCellHasOverlappingImage, 11)
112        self.assertEqual(NSCellHasImageHorizontal, 12)
113        self.assertEqual(NSCellHasImageOnLeftOrBottom, 13)
114        self.assertEqual(NSCellChangesContents, 14)
115        self.assertEqual(NSCellIsInsetButton, 15)
116        self.assertEqual(NSCellAllowsMixedState, 16)
117        self.assertEqual(NSNoImage, 0)
118        self.assertEqual(NSImageOnly, 1)
119        self.assertEqual(NSImageLeft, 2)
120        self.assertEqual(NSImageRight, 3)
121        self.assertEqual(NSImageBelow, 4)
122        self.assertEqual(NSImageAbove, 5)
123        self.assertEqual(NSImageOverlaps, 6)
124        self.assertEqual(NSScaleProportionally, 0)
125        self.assertEqual(NSScaleToFit, 1)
126        self.assertEqual(NSScaleNone, 2)
127        self.assertEqual(NSImageScaleProportionallyDown, 0)
128        self.assertEqual(NSImageScaleAxesIndependently,1)
129        self.assertEqual(NSImageScaleNone, 2)
130        self.assertEqual(NSImageScaleProportionallyUpOrDown, 3)
131        self.assertEqual(NSMixedState, -1)
132        self.assertEqual(NSOffState,  0)
133        self.assertEqual(NSOnState,  1)
134        self.assertEqual(NSNoCellMask, 0)
135        self.assertEqual(NSContentsCellMask, 1)
136        self.assertEqual(NSPushInCellMask, 2)
137        self.assertEqual(NSChangeGrayCellMask, 4)
138        self.assertEqual(NSChangeBackgroundCellMask, 8)
139        self.assertEqual(NSDefaultControlTint, 0)
140        self.assertEqual(NSBlueControlTint, 1)
141        self.assertEqual(NSGraphiteControlTint, 6)
142        self.assertEqual(NSClearControlTint, 7)
143        self.assertEqual(NSRegularControlSize, 0)
144        self.assertEqual(NSSmallControlSize, 1)
145        self.assertEqual(NSMiniControlSize, 2)
146        self.assertEqual(NSCellHitNone, 0)
147        self.assertEqual(NSCellHitContentArea, 1 << 0)
148        self.assertEqual(NSCellHitEditableTextArea, 1 << 1)
149        self.assertEqual(NSCellHitTrackableArea, 1 << 2)
150        self.assertEqual(NSBackgroundStyleLight, 0)
151        self.assertEqual(NSBackgroundStyleDark, 1)
152        self.assertEqual(NSBackgroundStyleRaised, 2)
153        self.assertEqual(NSBackgroundStyleLowered, 3)
154
155    @min_os_level('10.6')
156    def testMethods10_6(self):
157        self.assertResultIsBOOL(NSCell.usesSingleLineMode)
158        self.assertArgIsBOOL(NSCell.setUsesSingleLineMode_, 0)
159
160
161if __name__ == '__main__':
162    main( )
163