1from PyObjCTools.TestSupport import *
2
3from Foundation import *
4from AppKit import *
5import Foundation
6
7try:
8    unicode
9except NameError:
10    unicode = str
11
12
13try:
14    long
15except NameError:
16    long = int
17
18class TestNSAttributedString (TestCase):
19    def testOutput(self):
20        self.assertArgIsOut(NSAttributedString.attributesAtIndex_effectiveRange_, 1)
21        self.assertArgIsOut(NSAttributedString.attribute_atIndex_effectiveRange_, 2)
22        self.assertArgIsOut(NSAttributedString.attributesAtIndex_longestEffectiveRange_inRange_, 1)
23        self.assertArgIsOut(NSAttributedString.attribute_atIndex_longestEffectiveRange_inRange_, 2)
24
25        self.assertResultIsBOOL(NSAttributedString.isEqualToAttributedString_)
26
27    def testConstantsAppKit(self):
28        self.assertIsInstance(NSFontAttributeName, unicode)
29        self.assertIsInstance(NSParagraphStyleAttributeName, unicode)
30        self.assertIsInstance(NSForegroundColorAttributeName, unicode)
31        self.assertIsInstance(NSUnderlineStyleAttributeName, unicode)
32        self.assertIsInstance(NSSuperscriptAttributeName, unicode)
33        self.assertIsInstance(NSBackgroundColorAttributeName, unicode)
34        self.assertIsInstance(NSAttachmentAttributeName, unicode)
35        self.assertIsInstance(NSLigatureAttributeName, unicode)
36        self.assertIsInstance(NSBaselineOffsetAttributeName, unicode)
37        self.assertIsInstance(NSKernAttributeName, unicode)
38        self.assertIsInstance(NSLinkAttributeName, unicode)
39        self.assertIsInstance(NSStrokeWidthAttributeName, unicode)
40        self.assertIsInstance(NSStrokeColorAttributeName, unicode)
41        self.assertIsInstance(NSUnderlineColorAttributeName, unicode)
42        self.assertIsInstance(NSStrikethroughStyleAttributeName, unicode)
43        self.assertIsInstance(NSStrikethroughColorAttributeName, unicode)
44        self.assertIsInstance(NSShadowAttributeName, unicode)
45        self.assertIsInstance(NSObliquenessAttributeName, unicode)
46        self.assertIsInstance(NSExpansionAttributeName, unicode)
47        self.assertIsInstance(NSCursorAttributeName, unicode)
48        self.assertIsInstance(NSToolTipAttributeName, unicode)
49        self.assertIsInstance(NSCharacterShapeAttributeName, unicode)
50        self.assertIsInstance(NSGlyphInfoAttributeName, unicode)
51        self.assertIsInstance(NSMarkedClauseSegmentAttributeName, unicode)
52        self.assertIsInstance(NSSpellingStateAttributeName, unicode)
53
54        self.assertEqual(NSUnderlineStyleNone, 0x00)
55        self.assertEqual(NSUnderlineStyleSingle, 0x01)
56        self.assertEqual(NSUnderlineStyleThick, 0x02)
57        self.assertEqual(NSUnderlineStyleDouble, 0x09)
58        self.assertEqual(NSUnderlinePatternSolid, 0x0000)
59        self.assertEqual(NSUnderlinePatternDot, 0x0100)
60        self.assertEqual(NSUnderlinePatternDash, 0x0200)
61        self.assertEqual(NSUnderlinePatternDashDot, 0x0300)
62        self.assertEqual(NSUnderlinePatternDashDotDot, 0x0400)
63
64        self.assertEqual(NSSpellingStateSpellingFlag, 1)
65        self.assertEqual(NSSpellingStateGrammarFlag, 2)
66
67        self.assertIsInstance(NSPlainTextDocumentType, unicode)
68        self.assertIsInstance(NSRTFTextDocumentType, unicode)
69        self.assertIsInstance(NSRTFDTextDocumentType, unicode)
70        self.assertIsInstance(NSMacSimpleTextDocumentType, unicode)
71        self.assertIsInstance(NSHTMLTextDocumentType, unicode)
72        self.assertIsInstance(NSDocFormatTextDocumentType, unicode)
73        self.assertIsInstance(NSWordMLTextDocumentType, unicode)
74        self.assertIsInstance(NSWebArchiveTextDocumentType, unicode)
75        self.assertIsInstance(NSOfficeOpenXMLTextDocumentType, unicode)
76        self.assertIsInstance(NSOpenDocumentTextDocumentType, unicode)
77        self.assertIsInstance(NSPaperSizeDocumentAttribute, unicode)
78        self.assertIsInstance(NSLeftMarginDocumentAttribute, unicode)
79        self.assertIsInstance(NSRightMarginDocumentAttribute, unicode)
80        self.assertIsInstance(NSTopMarginDocumentAttribute, unicode)
81        self.assertIsInstance(NSBottomMarginDocumentAttribute, unicode)
82        self.assertIsInstance(NSViewSizeDocumentAttribute, unicode)
83        self.assertIsInstance(NSViewZoomDocumentAttribute, unicode)
84        self.assertIsInstance(NSViewModeDocumentAttribute, unicode)
85        self.assertIsInstance(NSDocumentTypeDocumentAttribute, unicode)
86        self.assertIsInstance(NSReadOnlyDocumentAttribute, unicode)
87        self.assertIsInstance(NSConvertedDocumentAttribute, unicode)
88        self.assertIsInstance(NSCocoaVersionDocumentAttribute, unicode)
89        self.assertIsInstance(NSBackgroundColorDocumentAttribute, unicode)
90        self.assertIsInstance(NSHyphenationFactorDocumentAttribute, unicode)
91        self.assertIsInstance(NSDefaultTabIntervalDocumentAttribute, unicode)
92        self.assertIsInstance(NSCharacterEncodingDocumentAttribute, unicode)
93        self.assertIsInstance(NSTitleDocumentAttribute, unicode)
94        self.assertIsInstance(NSCompanyDocumentAttribute, unicode)
95        self.assertIsInstance(NSCopyrightDocumentAttribute, unicode)
96        self.assertIsInstance(NSSubjectDocumentAttribute, unicode)
97        self.assertIsInstance(NSAuthorDocumentAttribute, unicode)
98        self.assertIsInstance(NSKeywordsDocumentAttribute, unicode)
99        self.assertIsInstance(NSCommentDocumentAttribute, unicode)
100        self.assertIsInstance(NSEditorDocumentAttribute, unicode)
101        self.assertIsInstance(NSCreationTimeDocumentAttribute, unicode)
102        self.assertIsInstance(NSModificationTimeDocumentAttribute, unicode)
103        self.assertIsInstance(NSExcludedElementsDocumentAttribute, unicode)
104        self.assertIsInstance(NSTextEncodingNameDocumentAttribute, unicode)
105        self.assertIsInstance(NSPrefixSpacesDocumentAttribute, unicode)
106        self.assertIsInstance(NSDocumentTypeDocumentOption, unicode)
107        self.assertIsInstance(NSDefaultAttributesDocumentOption, unicode)
108        self.assertIsInstance(NSCharacterEncodingDocumentOption, unicode)
109        self.assertIsInstance(NSTextEncodingNameDocumentOption, unicode)
110        self.assertIsInstance(NSBaseURLDocumentOption, unicode)
111        self.assertIsInstance(NSTimeoutDocumentOption, unicode)
112        self.assertIsInstance(NSWebPreferencesDocumentOption, unicode)
113        self.assertIsInstance(NSWebResourceLoadDelegateDocumentOption, unicode)
114        self.assertIsInstance(NSTextSizeMultiplierDocumentOption, unicode)
115
116        self.assertEqual(NSNoUnderlineStyle, 0)
117        self.assertEqual(NSSingleUnderlineStyle, 1)
118        self.assertIsInstance(NSUnderlineStrikethroughMask, (int, long))
119
120    def testMethodsAppKit(self):
121        self.assertResultIsBOOL(NSAttributedString.containsAttachments)
122        self.assertArgIsBOOL(NSAttributedString.nextWordFromIndex_forward_, 1)
123        self.assertArgIsOut(NSAttributedString.URLAtIndex_effectiveRange_, 1)
124
125        self.assertArgIsOut(NSAttributedString.initWithURL_options_documentAttributes_error_, 2)
126        self.assertArgIsOut(NSAttributedString.initWithURL_options_documentAttributes_error_, 3)
127
128        self.assertArgIsOut(NSAttributedString.initWithData_options_documentAttributes_error_, 2)
129        self.assertArgIsOut(NSAttributedString.initWithData_options_documentAttributes_error_, 3)
130
131        self.assertArgIsOut(NSAttributedString.initWithPath_documentAttributes_, 1)
132        self.assertArgIsOut(NSAttributedString.initWithURL_documentAttributes_, 1)
133        self.assertArgIsOut(NSAttributedString.initWithRTF_documentAttributes_, 1)
134        self.assertArgIsOut(NSAttributedString.initWithRTFD_documentAttributes_, 1)
135        self.assertArgIsOut(NSAttributedString.initWithHTML_documentAttributes_, 1)
136        self.assertArgIsOut(NSAttributedString.initWithHTML_options_documentAttributes_, 2)
137        self.assertArgIsOut(NSAttributedString.initWithHTML_baseURL_documentAttributes_, 2)
138        self.assertArgIsOut(NSAttributedString.initWithRTFDFileWrapper_documentAttributes_, 1)
139
140        self.assertArgIsOut(NSAttributedString.dataFromRange_documentAttributes_error_, 2)
141        self.assertArgIsOut(NSAttributedString.fileWrapperFromRange_documentAttributes_error_, 2)
142
143        self.assertResultIsBOOL(NSMutableAttributedString.readFromURL_options_documentAttributes_error_)
144        self.assertArgIsOut(NSMutableAttributedString.readFromURL_options_documentAttributes_error_, 2)
145        self.assertArgIsOut(NSMutableAttributedString.readFromURL_options_documentAttributes_error_, 3)
146
147        self.assertResultIsBOOL(NSMutableAttributedString.readFromData_options_documentAttributes_error_)
148        self.assertArgIsOut(NSMutableAttributedString.readFromData_options_documentAttributes_error_, 2)
149        self.assertArgIsOut(NSMutableAttributedString.readFromData_options_documentAttributes_error_, 3)
150
151        self.assertResultIsBOOL(NSMutableAttributedString.readFromURL_options_documentAttributes_)
152        self.assertArgIsOut(NSMutableAttributedString.readFromURL_options_documentAttributes_, 2)
153
154        self.assertResultIsBOOL(NSMutableAttributedString.readFromData_options_documentAttributes_)
155        self.assertArgIsOut(NSMutableAttributedString.readFromData_options_documentAttributes_, 2)
156
157    @min_os_level('10.6')
158    def testConstants10_6(self):
159        self.assertEqual(NSAttributedStringEnumerationReverse, 1<<1)
160        self.assertEqual(NSAttributedStringEnumerationLongestEffectiveRangeNotRequired, 1<<20)
161
162        self.assertIsInstance(NSWritingDirectionAttributeName, unicode)
163        self.assertIsInstance(NSFileTypeDocumentAttribute, unicode)
164        self.assertIsInstance(NSCategoryDocumentAttribute, unicode)
165        self.assertIsInstance(NSFileTypeDocumentOption, unicode)
166
167    @min_os_level('10.7')
168    def testConstants10_7(self):
169        self.assertIsInstance(NSVerticalGlyphFormAttributeName, unicode)
170        self.assertIsInstance(NSTextLayoutSectionOrientation, unicode)
171        self.assertIsInstance(NSTextLayoutSectionRange, unicode)
172        self.assertIsInstance(NSTextLayoutSectionsAttribute, unicode)
173
174    @min_os_level('10.6')
175    def testMethods10_6(self):
176        self.assertArgHasType(NSAttributedString.enumerateAttributesInRange_options_usingBlock_, 0, NSRange.__typestr__)
177        self.assertArgIsBlock(NSAttributedString.enumerateAttributesInRange_options_usingBlock_, 2, b'v@'+NSRange.__typestr__+b'o^'+objc._C_NSBOOL)
178
179        self.assertArgHasType(NSAttributedString.enumerateAttribute_inRange_options_usingBlock_, 1, NSRange.__typestr__)
180        self.assertArgIsBlock(NSAttributedString.enumerateAttribute_inRange_options_usingBlock_, 3, b'v@'+NSRange.__typestr__+b'o^'+objc._C_NSBOOL)
181
182if __name__ == '__main__':
183    main()
184