1
2from PyObjCTools.TestSupport import *
3from AppKit import *
4
5try:
6    long
7except NameError:
8    long = int
9
10
11class TestNSOpenGL (TestCase):
12    def testConstants(self):
13        self.assertEqual(NSOpenGLGOFormatCacheSize, 501)
14        self.assertEqual(NSOpenGLGOClearFormatCache, 502)
15        self.assertEqual(NSOpenGLGORetainRenderers, 503)
16        self.assertEqual(NSOpenGLGOResetLibrary, 504)
17
18        self.assertEqual(NSOpenGLPFAAllRenderers,   1)
19        self.assertEqual(NSOpenGLPFADoubleBuffer,   5)
20        self.assertEqual(NSOpenGLPFAStereo,   6)
21        self.assertEqual(NSOpenGLPFAAuxBuffers,   7)
22        self.assertEqual(NSOpenGLPFAColorSize,   8)
23        self.assertEqual(NSOpenGLPFAAlphaSize,  11)
24        self.assertEqual(NSOpenGLPFADepthSize,  12)
25        self.assertEqual(NSOpenGLPFAStencilSize,  13)
26        self.assertEqual(NSOpenGLPFAAccumSize,  14)
27        self.assertEqual(NSOpenGLPFAMinimumPolicy,  51)
28        self.assertEqual(NSOpenGLPFAMaximumPolicy,  52)
29        self.assertEqual(NSOpenGLPFAOffScreen,  53)
30        self.assertEqual(NSOpenGLPFAFullScreen,  54)
31        self.assertEqual(NSOpenGLPFASampleBuffers,  55)
32        self.assertEqual(NSOpenGLPFASamples,  56)
33        self.assertEqual(NSOpenGLPFAAuxDepthStencil,  57)
34        self.assertEqual(NSOpenGLPFAColorFloat,  58)
35        self.assertEqual(NSOpenGLPFAMultisample,  59)
36        self.assertEqual(NSOpenGLPFASupersample,  60)
37        self.assertEqual(NSOpenGLPFASampleAlpha,  61)
38        self.assertEqual(NSOpenGLPFARendererID,  70)
39        self.assertEqual(NSOpenGLPFASingleRenderer,  71)
40        self.assertEqual(NSOpenGLPFANoRecovery,  72)
41        self.assertEqual(NSOpenGLPFAAccelerated,  73)
42        self.assertEqual(NSOpenGLPFAClosestPolicy,  74)
43        self.assertEqual(NSOpenGLPFARobust,  75)
44        self.assertEqual(NSOpenGLPFABackingStore,  76)
45        self.assertEqual(NSOpenGLPFAMPSafe,  78)
46        self.assertEqual(NSOpenGLPFAWindow,  80)
47        self.assertEqual(NSOpenGLPFAMultiScreen,  81)
48        self.assertEqual(NSOpenGLPFACompliant,  83)
49        self.assertEqual(NSOpenGLPFAScreenMask,  84)
50        self.assertEqual(NSOpenGLPFAPixelBuffer,  90)
51        self.assertEqual(NSOpenGLPFAVirtualScreenCount, 128)
52
53
54        self.assertEqual(NSOpenGLCPSwapRectangle, 200)
55        self.assertEqual(NSOpenGLCPSwapRectangleEnable, 201)
56        self.assertEqual(NSOpenGLCPRasterizationEnable, 221)
57        self.assertEqual(NSOpenGLCPSwapInterval, 222)
58        self.assertEqual(NSOpenGLCPSurfaceOrder, 235)
59        self.assertEqual(NSOpenGLCPSurfaceOpacity, 236)
60        self.assertEqual(NSOpenGLCPStateValidation, 301)
61
62    @min_os_level("10.5")
63    def testConstants10_5(self):
64        self.assertEqual(NSOpenGLPFAAllowOfflineRenderers, 96)
65
66    @min_os_level("10.7")
67    def testConstants10_7(self):
68        self.assertEqual(NSOpenGLPFAOpenGLProfile, 99)
69        self.assertEqual(NSOpenGLProfileVersionLegacy, 0x1000)
70        self.assertEqual(NSOpenGLProfileVersion3_2Core, 0x3200)
71
72
73    def testFunctions(self):
74        major, minor = NSOpenGLGetVersion(None, None)
75        self.assertIsInstance(major, (int, long))
76        self.assertIsInstance(minor, (int, long))
77
78        self.assertArgIsOut(NSOpenGLGetOption, 1)
79        v = NSOpenGLGetOption(NSOpenGLGOFormatCacheSize, None)
80        self.assertIsInstance(v, (int, long))
81
82        NSOpenGLSetOption(NSOpenGLGOFormatCacheSize, v)
83
84    def testMethods(self):
85        self.assertArgIsNullTerminated(NSOpenGLPixelFormat.initWithAttributes_, 0)
86        self.assertArgIsIn(NSOpenGLPixelFormat.initWithAttributes_, 0)
87
88        o = NSOpenGLPixelFormat.alloc().initWithAttributes_([NSOpenGLPFANoRecovery, NSOpenGLPFAAuxBuffers, 2])
89        self.assertIsInstance(o, NSOpenGLPixelFormat)
90
91        #FIXME: I'm not entirely sure this test is correct.
92        self.assertArgIsOut(NSOpenGLPixelFormat.getValues_forAttribute_forVirtualScreen_, 0)
93        v = o.getValues_forAttribute_forVirtualScreen_(
94                None, NSOpenGLPFANoRecovery, 0)
95        self.assertIsInstance(v, (int, long))
96
97        self.assertResultHasType(NSOpenGLPixelFormat.CGLPixelFormatObj,
98                b'^{_CGLPixelFormatObject}')
99
100        self.assertResultHasType(NSOpenGLContext.CGLContextObj,
101                b'^{_CGLContextObj}')
102
103    @min_os_level('10.6')
104    def testMethods10_6(self):
105        self.assertArgHasType(NSOpenGLPixelFormat.initWithCGLPixelFormatObj_, 0, b'^{_CGLPixelFormatObject}')
106        self.assertArgHasType(NSOpenGLPixelFormat.initWithCGLBufferObj, 0, b'^{_CGLBufferObject}')
107        self.assertResultHasType(NSOpenGLPixelFormat.CGLBufferObj, b'^{_CGLBufferObject}')
108
109    @min_os_level('10.6')
110    def testMethods10_6(self):
111        self.assertEqual(NSOpenGLPFARemotePixelBuffer, 91)
112        self.assertEqual(NSOpenGLPFAAcceleratedCompute, 97)
113
114
115if __name__ == "__main__":
116    main()
117