1
2from PyObjCTools.TestSupport import *
3from Quartz.PDFKit import *
4
5class TestPDFViewHelper (NSObject):
6    def PDFViewWillChangeScaleFactor_toScale_(self, f, s): return 1.0
7    def PDFViewWillClickOnLink_withURL_(self, s, u): pass
8    def PDFViewPrintJobTitle_(self, s): return u'a'
9    def PDFViewPerformFind_(self, s): pass
10    def PDFViewPerformGoToPage_(self, s): pass
11    def PDFViewPerformPrint_(self, s): pass
12    def PDFViewOpenPDF_forRemoteGoToAction_(self, s, a): pass
13
14
15class TestPDFView (TestCase):
16    def testConstants(self):
17        self.assertEqual(kPDFDisplaySinglePage, 0)
18        self.assertEqual(kPDFDisplaySinglePageContinuous, 1)
19        self.assertEqual(kPDFDisplayTwoUp, 2)
20        self.assertEqual(kPDFDisplayTwoUpContinuous, 3)
21        self.assertEqual(kPDFNoArea, 0)
22        self.assertEqual(kPDFPageArea, 1)
23        self.assertEqual(kPDFTextArea, 2)
24        self.assertEqual(kPDFAnnotationArea, 4)
25        self.assertEqual(kPDFLinkArea, 8)
26        self.assertEqual(kPDFControlArea, 16)
27        self.assertEqual(kPDFTextFieldArea, 32)
28        self.assertEqual(kPDFIconArea, 64)
29        self.assertEqual(kPDFPopupArea, 128)
30
31        self.assertIsInstance(PDFViewDocumentChangedNotification, unicode)
32        self.assertIsInstance(PDFViewChangedHistoryNotification, unicode)
33        self.assertIsInstance(PDFViewPageChangedNotification, unicode)
34        self.assertIsInstance(PDFViewScaleChangedNotification, unicode)
35        self.assertIsInstance(PDFViewAnnotationHitNotification, unicode)
36        self.assertIsInstance(PDFViewCopyPermissionNotification, unicode)
37        self.assertIsInstance(PDFViewPrintPermissionNotification, unicode)
38
39    @min_os_level('10.5')
40    def testConstants10_5(self):
41        self.assertIsInstance(PDFViewAnnotationWillHitNotification, unicode)
42        self.assertIsInstance(PDFViewSelectionChangedNotification, unicode)
43        self.assertIsInstance(PDFViewDisplayModeChangedNotification, unicode)
44        self.assertIsInstance(PDFViewDisplayBoxChangedNotification, unicode)
45
46    def testMethods(self):
47        self.assertResultIsBOOL(PDFView.canGoToFirstPage)
48        self.assertResultIsBOOL(PDFView.canGoToLastPage)
49        self.assertResultIsBOOL(PDFView.canGoToNextPage)
50        self.assertResultIsBOOL(PDFView.canGoToPreviousPage)
51        self.assertResultIsBOOL(PDFView.canGoBack)
52        self.assertResultIsBOOL(PDFView.canGoForward)
53
54        self.assertResultIsBOOL(PDFView.displaysPageBreaks)
55        self.assertArgIsBOOL(PDFView.setDisplaysPageBreaks_, 0)
56        self.assertResultIsBOOL(PDFView.displaysAsBook)
57        self.assertArgIsBOOL(PDFView.setDisplaysAsBook_, 0)
58        self.assertResultIsBOOL(PDFView.shouldAntiAlias)
59        self.assertArgIsBOOL(PDFView.setShouldAntiAlias_, 0)
60
61        self.assertResultIsBOOL(PDFView.canZoomIn)
62        self.assertResultIsBOOL(PDFView.canZoomOut)
63        self.assertResultIsBOOL(PDFView.autoScales)
64        self.assertArgIsBOOL(PDFView.setAutoScales_, 0)
65
66        self.assertArgIsBOOL(PDFView.pageForPoint_nearest_, 1)
67
68        self.assertResultIsBOOL(PDFView.allowsDragging)
69        self.assertArgIsBOOL(PDFView.setAllowsDragging_, 0)
70
71    @min_os_level('10.5')
72    def testMethods10_5(self):
73        self.assertArgIsBOOL(PDFView.setCurrentSelection_animate_, 1)
74        self.assertArgIsBOOL(PDFView.printWithInfo_autoRotate_, 1)
75        self.assertArgIsBOOL(PDFView.printWithInfo_autoRotate_pageScaling_, 1)
76
77    @min_os_level('10.6')
78    def testMethods10_6(self):
79        self.assertResultIsBOOL(PDFView.enableDataDetectors)
80        self.assertArgIsBOOL(PDFView.setEnableDataDetectors_, 0)
81
82    def testProtocols(self):
83        self.assertIsInstance(protocols.PDFViewDelegate, objc.informal_protocol)
84
85        self.assertArgHasType(TestPDFViewHelper.PDFViewWillChangeScaleFactor_toScale_, 1, objc._C_CGFloat)
86        self.assertResultHasType(TestPDFViewHelper.PDFViewWillChangeScaleFactor_toScale_, objc._C_CGFloat)
87
88if __name__ == "__main__":
89    main()
90