1from Foundation import *
2from PyObjCTools.TestSupport import *
3
4try:
5    unicode
6except NameError:
7    unicode = str
8
9class TestNSOperation (TestCase):
10    def testConstants(self):
11        self.assertEqual(NSOperationQueuePriorityVeryLow, -8)
12        self.assertEqual(NSOperationQueuePriorityLow, -4)
13        self.assertEqual(NSOperationQueuePriorityNormal, 0)
14        self.assertEqual(NSOperationQueuePriorityHigh, 4)
15        self.assertEqual(NSOperationQueuePriorityVeryHigh, 8)
16
17        self.assertIsInstance(NSInvocationOperationVoidResultException, unicode)
18        self.assertIsInstance(NSInvocationOperationCancelledException, unicode)
19        self.assertEqual(NSOperationQueueDefaultMaxConcurrentOperationCount, -1)
20
21    def testMethods(self):
22        self.assertResultIsBOOL(NSOperation.isCancelled)
23        self.assertResultIsBOOL(NSOperation.isExecuting)
24        self.assertResultIsBOOL(NSOperation.isFinished)
25        self.assertResultIsBOOL(NSOperation.isConcurrent)
26        self.assertResultIsBOOL(NSOperation.isReady)
27
28        self.assertResultIsBOOL(NSOperationQueue.isSuspended)
29        self.assertArgIsBOOL(NSOperationQueue.setSuspended_, 0)
30
31
32    @min_os_level('10.6')
33    def testMethods10_6(self):
34        self.assertResultIsBlock(NSOperation.completionBlock, b'v')
35        self.assertArgIsBlock(NSOperation.setCompletionBlock_, 0, b'v')
36
37        self.assertArgIsBlock(NSBlockOperation.blockOperationWithBlock_, 0, b'v')
38        self.assertArgIsBlock(NSBlockOperation.addExecutionBlock_, 0, b'v')
39
40        self.assertArgIsBOOL(NSOperationQueue.addOperations_waitUntilFinished_, 1)
41        self.assertArgIsBlock(NSOperationQueue.addOperationWithBlock_, 0, b'v')
42
43if __name__ == "__main__":
44    main()
45