1
2from PyObjCTools.TestSupport import *
3from AppKit import *
4
5class TestNSTypesetterHelper (NSTypesetter):
6    def willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_(self, a, b, c, d): return 1
7    def getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_(self, a, b, c, d, e, f): return 1
8    def getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_(self, a, b, c, d, e, f, g, h): return 1
9
10class TestNSTypesetter (TestCase):
11    def testConstants(self):
12        self.failUnlessEqual(NSTypesetterZeroAdvancementAction, (1 << 0))
13        self.failUnlessEqual(NSTypesetterWhitespaceAction, (1 << 1))
14        self.failUnlessEqual(NSTypesetterHorizontalTabAction, (1 << 2))
15        self.failUnlessEqual(NSTypesetterLineBreakAction, (1 << 3))
16        self.failUnlessEqual(NSTypesetterParagraphBreakAction, (1 << 4))
17        self.failUnlessEqual(NSTypesetterContainerBreakAction, (1 << 5))
18
19    def testMethods(self):
20        self.failUnlessArgIsOut(NSTypesetter.characterRangeForGlyphRange_actualGlyphRange_, 1)
21        self.failUnlessArgIsOut(NSTypesetter.glyphRangeForCharacterRange_actualCharacterRange_, 1)
22        self.failUnlessArgHasType(NSTypesetter.setBidiLevels_forGlyphRange_, 0, 'n^' + objc._C_CHAR_AS_INT)
23        self.failUnlessArgSizeInArg(NSTypesetter.setBidiLevels_forGlyphRange_, 0, 1)
24        self.failUnlessArgIsIn(NSTypesetter.setLocation_withAdvancements_forStartOfGlyphRange_, 1)
25        self.failUnlessArgSizeInArg(NSTypesetter.setLocation_withAdvancements_forStartOfGlyphRange_, 1, 2)
26        self.failUnlessArgIsOut(NSTypesetter.layoutGlyphsInLayoutManager_startingAtGlyphIndex_maxNumberOfLineFragments_nextGlyphIndex_, 3)
27        self.failUnlessArgIsOut(NSTypesetter.getLineFragmentRect_usedRect_forParagraphSeparatorGlyphRange_atProposedOrigin_, 0)
28        self.failUnlessArgIsOut(NSTypesetter.getLineFragmentRect_usedRect_forParagraphSeparatorGlyphRange_atProposedOrigin_, 1)
29
30        self.failUnlessResultHasType(NSTypesetter.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, objc._C_NSUInteger)
31        self.failUnlessArgHasType(NSTypesetter.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 0, NSRange.__typestr__)
32
33        self.failUnlessArgHasType(TestNSTypesetterHelper.willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_, 0, 'N^' + NSRect.__typestr__)
34        self.failUnlessArgHasType(TestNSTypesetterHelper.willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_, 1, NSRange.__typestr__)
35        self.failUnlessArgHasType(TestNSTypesetterHelper.willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_, 2, 'N^' + NSRect.__typestr__)
36        self.failUnlessArgHasType(TestNSTypesetterHelper.willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_, 3, 'N^' + objc._C_CGFloat)
37
38
39        self.failUnlessResultHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, objc._C_NSUInteger)
40        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 0, NSRange.__typestr__)
41        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 1, 'o^I')
42        self.failUnlessArgSizeInArg(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 1, 0)
43
44        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 2, 'o^' + objc._C_NSUInteger)
45        self.failUnlessArgSizeInArg(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 2, 0)
46        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 3, 'o^' + objc._C_NSUInteger)
47        self.failUnlessArgSizeInArg(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 3, 0)
48        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 4, 'o^' + objc._C_NSBOOL)
49        self.failUnlessArgSizeInArg(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 4, 0)
50        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 5, 'o^' + objc._C_UCHR)
51        self.failUnlessArgSizeInArg(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 5, 0)
52
53        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 0, 'N^' + NSRect.__typestr__)
54        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 1, 'N^' + NSRect.__typestr__)
55        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 2, 'N^' + NSRect.__typestr__)
56        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 3, objc._C_NSUInteger)
57        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 4, NSRect.__typestr__)
58        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 5, objc._C_CGFloat)
59        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 6, objc._C_CGFloat)
60        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 7, objc._C_CGFloat)
61
62
63    @min_os_level("10.5")
64    def testMethods10_5(self):
65        self.failUnlessArgHasType(NSTypesetter.printingAdjustmentInLayoutManager_forNominallySpacedGlyphRange_packedGlyphs_count_, 2, 'n^v')
66        self.failUnlessArgSizeInArg(NSTypesetter.printingAdjustmentInLayoutManager_forNominallySpacedGlyphRange_packedGlyphs_count_, 2, 3)
67
68
69
70if __name__ == "__main__":
71    main()
72