1 2from PyObjCTools.TestSupport import * 3from AppKit import * 4 5 6class TestNSATSTypesetterHelper (NSATSTypesetter): 7 def willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_( 8 self, lineRect, glyphRange, usedRect, offset): 9 return None 10 11 12 def shouldBreakLineByWordBeforeCharacterAtIndex_(self, v): 13 return None 14 15 def shouldBreakLineByHyphenatingBeforeCharacterAtIndex_(self, v): 16 return True 17 18 def hyphenationFactorForGlyphAtIndex_(self, v): 19 return None 20 21 def hyphenCharacterForGlyphAtIndex_(self, v): 22 return None 23 24 def boundingBoxForControlGlyphAtIndex_forTextContainer_proposedLineFragment_glyphPosition_characterIndex_(self, v, v2, v3, v4, v5): 25 return None 26 27 def characterRangeForGlyphRange_actualGlyphRange_(self, v1, v2): 28 pass 29 30 def glyphRangeForCharacterRange_actualCharacterRange_(self, v1, v2): 31 pass 32 33 def getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_(self, v1, v2, v3, v4, v5): 34 pass 35 36 def setLineFragmentRect_forGlyphRange_usedRect_baselineOffset_(self, v1, v2, v3, v4): 37 pass 38 39 def substituteGlyphsInRange_withGlyphs_(self, v1, v2): 40 pass 41 42 def insertGlyph_atGlyphIndex_characterIndex_(self, v1, v2, v3): 43 pass 44 45 def deleteGlyphsInRange_(self, v1): 46 pass 47 48 def setNotShownAttribute_forGlyphRange_(self, v1, v2): 49 pass 50 51 def setLocation_withAdvancements_forStartOfGlyphRange_(self, v1, v2, v3): 52 pass 53 54 def setAttachmentSize_forGlyphRange_(self, v1, v2): 55 pass 56 57 def setBidiLevels_forGlyphRange_(self, v1, v2): 58 pass 59 60 61class TestNSATSTypesetter (TestCase): 62 def testByRefArguments(self): 63 self.assertArgIsOut(NSATSTypesetter.lineFragmentRectForProposedRect_remainingRect_, 1) 64 self.assertArgIsInOut(NSATSTypesetter.layoutParagraphAtPoint_, 0) 65 self.assertArgIsOut(NSATSTypesetter.getLineFragmentRect_usedRect_forParagraphSeparatorGlyphRange_atProposedOrigin_, 0) 66 self.assertArgIsOut(NSATSTypesetter.getLineFragmentRect_usedRect_forParagraphSeparatorGlyphRange_atProposedOrigin_, 1) 67 68 o = TestNSATSTypesetterHelper.alloc().init() 69 m = o.willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_.__metadata__() 70 self.assertStartswith(m['arguments'][2]['type'], b'N^{') 71 self.assertStartswith(m['arguments'][4]['type'], b'N^{') 72 self.assertStartswith(m['arguments'][5]['type'], b'N^' + objc._C_CGFloat) 73 74 m = o.shouldBreakLineByWordBeforeCharacterAtIndex_.__metadata__() 75 self.assertEqual(m['retval']['type'], objc._C_NSBOOL) 76 self.assertEqual(m['arguments'][2]['type'], objc._C_NSUInteger) 77 78 m = o.shouldBreakLineByHyphenatingBeforeCharacterAtIndex_.__metadata__() 79 self.assertEqual(m['retval']['type'], objc._C_NSBOOL) 80 self.assertEqual(m['arguments'][2]['type'], objc._C_NSUInteger) 81 82 m = o.hyphenationFactorForGlyphAtIndex_.__metadata__() 83 self.assertEqual(m['retval']['type'], objc._C_FLT) 84 self.assertEqual(m['arguments'][2]['type'], objc._C_NSUInteger) 85 86 #m = o.hyphenCharacterForGlyphAtIndex_.__metadata__() 87 #self.assertEqual(m['retval']['type'], objc._C_UINT) 88 #self.assertEqual(m['arguments'][2]['type'], objc._C_NSUInteger) 89 90 #m = o.boundingBoxForControlGlyphAtIndex_forTextContainer_proposedLineFragment_glyphPosition_characterIndex_.__metadata__() 91 #self.assertEqual(m['retval']['type'], NSRect.__typestr__) 92 #self.assertEqual(m['arguments'][2]['type'], objc._C_NSUInteger) 93 #self.assertEqual(m['arguments'][3]['type'], objc._C_ID) 94 #self.assertStartswith(m['arguments'][4]['type'], '{') 95 #self.assertStartswith(m['arguments'][5]['type'], '{') 96 #self.assertStartswith(m['arguments'][6]['type'], objc._C_NSUInteger) 97 98 99 100 #m = o.characterRangeForGlyphRange_actualGlyphRange_.__metadata__() 101 #self.assertStartswith(m['retval']['type'], '{') 102 #self.assertStartswith(m['arguments'][2]['type'], '{') 103 #self.assertStartswith(m['arguments'][3]['type'], 'o^{') 104 105 m = o.glyphRangeForCharacterRange_actualCharacterRange_.__metadata__() 106 self.assertStartswith(m['retval']['type'], b'{') 107 self.assertStartswith(m['arguments'][2]['type'], b'{') 108 self.assertStartswith(m['arguments'][3]['type'], b'o^{') 109 110 #m = o.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_.__metadata__() 111 #self.assertEqual(m['retval']['type'], objc._C_NSUInteger) 112 #self.assertEqual(m['arguments'][2]['type'], NSRange.__typestr__) 113 #self.assertEqual(m['arguments'][3]['type'], 'o^S') 114 #self.assertEqual(m['arguments'][3]['c_array_length_in_arg'], 2) 115 #self.assertEqual(m['arguments'][4]['type'], objc._C_OUT + objc._C_PTR + objc._C_NSUInteger) 116 #self.assertEqual(m['arguments'][4]['c_array_length_in_arg'], 2) 117 #m = o.setLineFragmentRect_forGlyphRange_usedRect_baselineOffset_.__metadata__() 118 #m = o.substituteGlyphsInRange_withGlyphs_.__metadata__() 119 #m = o.insertGlyph_atGlyphIndex_characterIndex_.__metadata__() 120 #m = o.deleteGlyphsInRange_.__metadata__() 121 #m = o.setNotShownAttribute_forGlyphRange_.__metadata__() 122 #m = o.setLocation_withAdvancements_forStartOfGlyphRange_.__metadata__() 123 #m = o.setAttachmentSize_forGlyphRange_.__metadata__() 124 #m = o.setBidiLevels_forGlyphRange_.__metadata__() 125 126 127 self.assertResultIsBOOL(NSATSTypesetter.usesFontLeading) 128 self.assertArgIsBOOL(NSATSTypesetter.setUsesFontLeading_, 0) 129 self.assertResultIsBOOL(NSATSTypesetter.bidiProcessingEnabled) 130 self.assertArgIsBOOL(NSATSTypesetter.setBidiProcessingEnabled_, 0) 131 self.assertArgIsBOOL(NSATSTypesetter.setHardInvalidation_forGlyphRange_, 0) 132 self.assertArgIsBOOL(NSATSTypesetter.setNotShownAttribute_forGlyphRange_, 0) 133 self.assertArgIsBOOL(NSATSTypesetter.setDrawsOutsideLineFragment_forGlyphRange_, 0) 134 135 136 self.assertArgIsIn(NSATSTypesetter.setLocation_withAdvancements_forStartOfGlyphRange_, 1) 137 self.assertArgSizeInArg(NSATSTypesetter.setLocation_withAdvancements_forStartOfGlyphRange_, 1, 2) 138 self.assertArgSizeInArg(NSATSTypesetter.setBidiLevels_forGlyphRange_, 0, 1) 139 self.assertArgSizeInArg(NSATSTypesetter.setBidiLevels_forGlyphRange_, 0, 1) 140 141 def testSubclassProtocols(self): 142 self.assertResultIsBOOL(TestNSATSTypesetterHelper.shouldBreakLineByWordBeforeCharacterAtIndex_) 143 self.assertResultIsBOOL(TestNSATSTypesetterHelper.shouldBreakLineByHyphenatingBeforeCharacterAtIndex_) 144 145 146 147if __name__ == "__main__": 148 main() 149