1
2from PyObjCTools.TestSupport import *
3from AppKit import *
4
5class TestNSDocument (TestCase):
6    def testConstants(self):
7        self.assertEqual(NSChangeDone, 0)
8        self.assertEqual(NSChangeUndone, 1)
9        self.assertEqual(NSChangeCleared, 2)
10        self.assertEqual(NSChangeRedone, 5)
11        self.assertEqual(NSChangeReadOtherContents, 3)
12        self.assertEqual(NSChangeAutosaved, 4)
13
14        self.assertEqual(NSSaveOperation, 0)
15        self.assertEqual(NSSaveAsOperation, 1)
16        self.assertEqual(NSSaveToOperation, 2)
17        self.assertEqual(NSAutosaveOperation, 3)
18
19    @min_os_level('10.7')
20    def testConstants10_7(self):
21        self.assertEqual(NSChangeDiscardable, 256)
22        self.assertEqual(NSAutosaveInPlaceOperation, 4)
23        self.assertEqual(NSAutosaveElsewhereOperation, 3)
24
25    @min_os_level('10.8')
26    def testConstants10_8(self):
27        self.assertEqual(NSAutosaveAsOperation, 5)
28
29
30    def testMethods(self):
31        self.assertArgIsOut(NSDocument.initWithType_error_, 1)
32        self.assertArgIsOut(NSDocument.initWithContentsOfURL_ofType_error_, 2)
33        self.assertArgIsOut(NSDocument.initForURL_withContentsOfURL_ofType_error_, 3)
34        self.assertResultIsBOOL(NSDocument.revertToContentsOfURL_ofType_error_)
35        self.assertArgIsOut(NSDocument.revertToContentsOfURL_ofType_error_, 2)
36        self.assertResultIsBOOL(NSDocument.readFromURL_ofType_error_)
37        self.assertArgIsOut(NSDocument.readFromURL_ofType_error_, 2)
38        self.assertResultIsBOOL(NSDocument.readFromFileWrapper_ofType_error_)
39        self.assertArgIsOut(NSDocument.readFromFileWrapper_ofType_error_, 2)
40        self.assertResultIsBOOL(NSDocument.readFromData_ofType_error_)
41        self.assertArgIsOut(NSDocument.readFromData_ofType_error_, 2)
42        self.assertResultIsBOOL(NSDocument.writeToURL_ofType_error_)
43        self.assertArgIsOut(NSDocument.writeToURL_ofType_error_, 2)
44        self.assertArgIsOut(NSDocument.fileWrapperOfType_error_, 1)
45        self.assertArgIsOut(NSDocument.dataOfType_error_, 1)
46        self.assertResultIsBOOL(NSDocument.writeSafelyToURL_ofType_forSaveOperation_error_)
47        self.assertArgIsOut(NSDocument.writeSafelyToURL_ofType_forSaveOperation_error_, 3)
48        self.assertResultIsBOOL(NSDocument.writeToURL_ofType_forSaveOperation_originalContentsURL_error_)
49        self.assertArgIsOut(NSDocument.writeToURL_ofType_forSaveOperation_originalContentsURL_error_, 4)
50        self.assertArgIsOut(NSDocument.fileAttributesToWriteToURL_ofType_forSaveOperation_originalContentsURL_error_, 4)
51        self.assertResultIsBOOL(NSDocument.keepBackupFile)
52        self.assertArgIsSEL(NSDocument.saveDocumentWithDelegate_didSaveSelector_contextInfo_, 1, b"v@:@"+objc._C_NSBOOL+b"^v")
53        self.assertArgHasType(NSDocument.saveDocumentWithDelegate_didSaveSelector_contextInfo_, 2, b"^v")
54        self.assertArgIsSEL(NSDocument.runModalSavePanelForSaveOperation_delegate_didSaveSelector_contextInfo_, 2, b"v@:@"+objc._C_NSBOOL+b"^v")
55        self.assertArgHasType(NSDocument.runModalSavePanelForSaveOperation_delegate_didSaveSelector_contextInfo_, 3, b"^v")
56        self.assertResultIsBOOL(NSDocument.shouldRunSavePanelWithAccessoryView)
57        self.assertResultIsBOOL(NSDocument.prepareSavePanel_)
58        self.assertResultIsBOOL(NSDocument.fileNameExtensionWasHiddenInLastRunSavePanel)
59        self.assertArgIsSEL(NSDocument.saveToURL_ofType_forSaveOperation_delegate_didSaveSelector_contextInfo_, 4, b"v@:@"+objc._C_NSBOOL+b"^v")
60        self.assertArgHasType(NSDocument.saveToURL_ofType_forSaveOperation_delegate_didSaveSelector_contextInfo_, 5, b"^v")
61        self.assertResultIsBOOL(NSDocument.saveToURL_ofType_forSaveOperation_error_)
62        self.assertArgIsOut(NSDocument.saveToURL_ofType_forSaveOperation_error_, 3)
63        self.assertResultIsBOOL(NSDocument.hasUnautosavedChanges)
64        self.assertArgIsSEL(NSDocument.autosaveDocumentWithDelegate_didAutosaveSelector_contextInfo_, 1, b"v@:@"+objc._C_NSBOOL+b"^v")
65        self.assertArgHasType(NSDocument.autosaveDocumentWithDelegate_didAutosaveSelector_contextInfo_, 2, b"^v")
66        self.assertArgIsSEL(NSDocument.canCloseDocumentWithDelegate_shouldCloseSelector_contextInfo_, 1, b"v@:@"+objc._C_NSBOOL+b"^v")
67        self.assertArgHasType(NSDocument.canCloseDocumentWithDelegate_shouldCloseSelector_contextInfo_, 2, b"^v")
68        self.assertArgIsSEL(NSDocument.runModalPageLayoutWithPrintInfo_delegate_didRunSelector_contextInfo_, 2, b"v@:@"+objc._C_NSBOOL+b"^v")
69        self.assertArgHasType(NSDocument.runModalPageLayoutWithPrintInfo_delegate_didRunSelector_contextInfo_, 3, b"^v")
70        self.assertResultIsBOOL(NSDocument.preparePageLayout_)
71        self.assertResultIsBOOL(NSDocument.shouldChangePrintInfo_)
72        self.assertArgIsSEL(NSDocument.printDocumentWithSettings_showPrintPanel_delegate_didPrintSelector_contextInfo_, 3, b"v@:@"+objc._C_NSBOOL+b"^v")
73        self.assertArgHasType(NSDocument.printDocumentWithSettings_showPrintPanel_delegate_didPrintSelector_contextInfo_, 4, b"^v")
74        self.assertArgIsOut(NSDocument.printOperationWithSettings_error_, 1)
75        self.assertArgIsSEL(NSDocument.runModalPrintOperation_delegate_didRunSelector_contextInfo_, 2, b"v@:@"+objc._C_NSBOOL+b"^v")
76        self.assertArgHasType(NSDocument.runModalPrintOperation_delegate_didRunSelector_contextInfo_, 3, b"^v")
77        self.assertResultIsBOOL(NSDocument.isDocumentEdited)
78        self.assertResultIsBOOL(NSDocument.hasUndoManager)
79        self.assertArgIsBOOL(NSDocument.setHasUndoManager_, 0)
80        self.assertResultIsBOOL(NSDocument.presentError_)
81        self.assertArgIsSEL(NSDocument.presentError_modalForWindow_delegate_didPresentSelector_contextInfo_, 3, b"v@:"+objc._C_NSBOOL+b"^v")
82        self.assertArgHasType(NSDocument.presentError_modalForWindow_delegate_didPresentSelector_contextInfo_, 4, b"^v")
83        self.assertArgIsSEL(NSDocument.shouldCloseWindowController_delegate_shouldCloseSelector_contextInfo_, 2, b"v@:@"+objc._C_NSBOOL+b"^v")
84        self.assertArgHasType(NSDocument.shouldCloseWindowController_delegate_shouldCloseSelector_contextInfo_, 3, b"^v")
85        self.assertResultIsBOOL(NSDocument.isNativeType_)
86        self.assertResultIsBOOL(NSDocument.validateUserInterfaceItem_)
87        self.assertResultIsBOOL(NSDocument.loadDataRepresentation_ofType_)
88        self.assertArgIsBOOL(NSDocument.printShowingPrintPanel_, 0)
89        self.assertResultIsBOOL(NSDocument.readFromFile_ofType_)
90        self.assertResultIsBOOL(NSDocument.readFromURL_ofType_)
91        self.assertResultIsBOOL(NSDocument.revertToSavedFromFile_ofType_)
92        self.assertResultIsBOOL(NSDocument.revertToSavedFromURL_ofType_)
93        self.assertResultIsBOOL(NSDocument.writeToFile_ofType_)
94        self.assertResultIsBOOL(NSDocument.writeToFile_ofType_originalFile_saveOperation_)
95        self.assertResultIsBOOL(NSDocument.writeToURL_ofType_)
96        self.assertResultIsBOOL(NSDocument.writeWithBackupToFile_ofType_saveOperation_)
97        self.assertArgIsSEL(NSDocument.saveToFile_saveOperation_delegate_didSaveSelector_contextInfo_, 3, b'v@:@'+objc._C_NSBOOL+b'^v')
98        self.assertArgHasType(NSDocument.saveToFile_saveOperation_delegate_didSaveSelector_contextInfo_, 4, b'^v')
99
100
101    @min_os_level('10.6')
102    def testMethods10_6(self):
103        self.assertResultIsBOOL(NSDocument.canConcurrentlyReadDocumentsOfType_)
104
105    @min_os_level('10.7')
106    def testMethods10_7(self):
107        self.assertArgIsBOOL(NSDocument.performActivityWithSynchronousWaiting_usingBlock_, 0)
108        self.assertArgIsBlock(NSDocument.performActivityWithSynchronousWaiting_usingBlock_, 1, b'v')
109        self.assertArgIsBlock(NSDocument.continueActivityUsingBlock_, 0, b'v')
110        self.assertArgIsBlock(NSDocument.continueAsynchronousWorkOnMainThreadUsingBlock_, 0, b'v')
111        self.assertArgIsBlock(NSDocument.performSynchronousFileAccessUsingBlock_, 0, b'v')
112
113        self.assertArgIsBlock(NSDocument.performAsynchronousFileAccessUsingBlock_, 0, b'v@?') #FIXME: block has a block argument
114
115        self.assertResultIsBOOL(NSDocument.isEntireFileLoaded)
116        self.assertResultIsBOOL(NSDocument.autosavingIsImplicitlyCancellable)
117
118        self.assertArgIsBlock(NSDocument.saveToURL_ofType_forSaveOperation_completionHandler_, 3, b'v@')
119        self.assertResultIsBOOL(NSDocument.canAsynchronouslyWriteToURL_ofType_forSaveOperation_)
120        self.assertResultIsBOOL(NSDocument.checkAutosavingSafetyAndReturnError_)
121        self.assertArgIsOut(NSDocument.checkAutosavingSafetyAndReturnError_, 0)
122        self.assertArgIsBOOL(NSDocument.autosaveWithImplicitCancellability_completionHandler_, 0)
123        self.assertArgIsBlock(NSDocument.autosaveWithImplicitCancellability_completionHandler_, 1, b'v@')
124
125        self.assertResultIsBOOL(NSDocument.autosavesInPlace)
126        self.assertResultIsBOOL(NSDocument.preservesVersions)
127
128        self.assertArgIsSEL(NSDocument.duplicateDocumentWithDelegate_didDuplicateSelector_contextInfo_, 1, b'v@' + objc._C_NSBOOL + b'^v')
129        self.assertArgIsOut(NSDocument.duplicateAndReturnError_, 0)
130        self.assertResultIsBOOL(NSDocument.isInViewingMode)
131
132    @min_os_level('10.8')
133    def testMethods10_8(self):
134        self.assertArgIsBOOL(NSDocument.setDraft_, 0)
135        self.assertResultIsBOOL(NSDocument.isDraft)
136        self.assertResultIsBOOL(NSDocument.autosavesDrafts)
137
138        self.assertArgIsBlock(NSDocument.moveDocumentWithCompletionHandler_, 0,
139                b'v' + objc._C_NSBOOL)
140        self.assertArgIsBlock(NSDocument.moveToURL_completionHandler_, 1,
141                b'v' + objc._C_NSBOOL)
142        self.assertArgIsBlock(NSDocument.lockDocumentWithCompletionHandler_, 0,
143                b'v' + objc._C_NSBOOL)
144        self.assertArgIsBlock(NSDocument.lockWithCompletionHandler_, 0,
145                b'v@')
146        self.assertArgIsBlock(NSDocument.unlockDocumentWithCompletionHandler_, 0,
147                b'v' + objc._C_NSBOOL)
148        self.assertArgIsBlock(NSDocument.unlockWithCompletionHandler_, 0,
149                b'v@')
150        self.assertResultIsBOOL(NSDocument.isLocked)
151        self.assertResultIsBOOL(NSDocument.usesUbiquitousStorage)
152
153if __name__ == "__main__":
154    main()
155