1 2from PyObjCTools.TestSupport import * 3from Quartz.CoreGraphics import * 4 5class TestCGDisplayConfiguration (TestCase): 6 7 def testTypes(self): 8 self.assertIsOpaquePointer(CGDisplayConfigRef) 9 10 err, config = CGBeginDisplayConfiguration(None) 11 self.assertEqual(err, 0) 12 self.assertIsInstance(config, CGDisplayConfigRef) 13 14 err = CGConfigureDisplayOrigin(config, 15 CGMainDisplayID(), 0, 0) 16 self.assertEqual(err, 0) 17 18 err = CGConfigureDisplayMode(config, 19 CGMainDisplayID(), CGDisplayAvailableModes(CGMainDisplayID())[0]) 20 self.assertEqual(err, 0) 21 22 err = CGConfigureDisplayStereoOperation(config, 23 CGMainDisplayID(), False, False) 24 self.assertEqual(err, 0) 25 26 err = CGConfigureDisplayMirrorOfDisplay(config, 27 CGMainDisplayID(), CGMainDisplayID()) 28 self.assertIsInstance(err, (int, long)) 29 30 err = CGCancelDisplayConfiguration(config) 31 self.assertEqual(err, 0) 32 config = None 33 34 myInfo = object() 35 info = [] 36 def reconfig(display, flags, userInfo): 37 self.assertIsInstance(display, (int, long)) 38 self.assertIsInstance(flags, (int, long)) 39 self.assertTrue(userInfo is myInfo) 40 info.append((display, flags, userInfo)) 41 42 try: 43 err, config = CGBeginDisplayConfiguration(None) 44 self.assertEqual(err, 0) 45 self.assertIsInstance(config, CGDisplayConfigRef) 46 47 err = CGConfigureDisplayMode(config, 48 CGMainDisplayID(), CGDisplayAvailableModes(CGMainDisplayID())[0]) 49 50 err = CGDisplayRegisterReconfigurationCallback(reconfig, myInfo) 51 self.assertEqual(err, 0) 52 53 CGCompleteDisplayConfiguration(config, kCGConfigureForAppOnly) 54 55 self.assertTrue(len(info) > 0) 56 57 finally: 58 err = CGDisplayRemoveReconfigurationCallback(reconfig, myInfo) 59 self.assertEqual(err, 0) 60 l = len(info) 61 62 CGRestorePermanentDisplayConfiguration() 63 64 self.assertEqual(len(info), l) 65 66 err = CGDisplaySetStereoOperation(CGMainDisplayID(), False, False, kCGConfigureForAppOnly) 67 self.assertIsInstance(err, (int, long)) 68 69 v = CGDisplayIsActive(CGMainDisplayID()) 70 self.assertIsInstance(v, (int, long)) 71 72 v = CGDisplayIsAsleep(CGMainDisplayID()) 73 self.assertIsInstance(v, (int, long)) 74 75 v = CGDisplayIsOnline(CGMainDisplayID()) 76 self.assertIsInstance(v, (int, long)) 77 78 v = CGDisplayIsMain(CGMainDisplayID()) 79 self.assertIsInstance(v, (int, long)) 80 81 v = CGDisplayIsBuiltin(CGMainDisplayID()) 82 self.assertIsInstance(v, (int, long)) 83 84 v = CGDisplayIsInMirrorSet(CGMainDisplayID()) 85 self.assertIsInstance(v, (int, long)) 86 87 v = CGDisplayIsAlwaysInMirrorSet(CGMainDisplayID()) 88 self.assertIsInstance(v, (int, long)) 89 90 v = CGDisplayIsInHWMirrorSet(CGMainDisplayID()) 91 self.assertIsInstance(v, (int, long)) 92 93 v = CGDisplayMirrorsDisplay(CGMainDisplayID()) 94 self.assertIsInstance(v, (int, long)) 95 96 v = CGDisplayIsStereo(CGMainDisplayID()) 97 self.assertIsInstance(v, (int, long)) 98 99 v = CGDisplayPrimaryDisplay(CGMainDisplayID()) 100 self.assertIsInstance(v, (int, long)) 101 102 v = CGDisplayUnitNumber(CGMainDisplayID()) 103 self.assertIsInstance(v, (int, long)) 104 105 v = CGDisplayVendorNumber(CGMainDisplayID()) 106 self.assertIsInstance(v, (int, long)) 107 108 v = CGDisplayModelNumber(CGMainDisplayID()) 109 self.assertIsInstance(v, (int, long)) 110 111 v = CGDisplaySerialNumber(CGMainDisplayID()) 112 self.assertIsInstance(v, (int, long)) 113 114 v = CGDisplayIOServicePort(CGMainDisplayID()) 115 self.assertIsInstance(v, (int, long)) 116 117 v = CGDisplayScreenSize(CGMainDisplayID()) 118 self.assertIsInstance(v, CGSize) 119 120 v = CGDisplayRotation(CGMainDisplayID()) 121 self.assertIsInstance(v, float) 122 123 v = CGDisplayCopyColorSpace(CGMainDisplayID()) 124 self.assertIsInstance(v, CGColorSpaceRef) 125 126 127 def testContents(self): 128 self.assertEqual(kCGConfigureForAppOnly, 0) 129 self.assertEqual(kCGConfigureForSession, 1) 130 self.assertEqual(kCGConfigurePermanently, 2) 131 132 self.assertEqual(kCGDisplayBeginConfigurationFlag, (1 << 0)) 133 self.assertEqual(kCGDisplayMovedFlag, (1 << 1)) 134 self.assertEqual(kCGDisplaySetMainFlag, (1 << 2)) 135 self.assertEqual(kCGDisplaySetModeFlag, (1 << 3)) 136 self.assertEqual(kCGDisplayAddFlag, (1 << 4)) 137 self.assertEqual(kCGDisplayRemoveFlag, (1 << 5)) 138 self.assertEqual(kCGDisplayEnabledFlag, (1 << 8)) 139 self.assertEqual(kCGDisplayDisabledFlag, (1 << 9)) 140 self.assertEqual(kCGDisplayMirrorFlag, (1 << 10)) 141 self.assertEqual(kCGDisplayUnMirrorFlag, (1 << 11)) 142 self.assertEqual(kCGDisplayDesktopShapeChangedFlag, (1 << 12)) 143 144 @min_os_level('10.6') 145 def testFunctions10_6(self): 146 self.assertResultHasType(CGConfigureDisplayWithDisplayMode, b'i') 147 self.assertArgHasType(CGConfigureDisplayWithDisplayMode, 0, 148 b'^{_CGDisplayConfigRef=}') 149 self.assertArgHasType(CGConfigureDisplayWithDisplayMode, 1, 150 b'I') 151 self.assertArgHasType(CGConfigureDisplayWithDisplayMode, 2, 152 b'^{CGDisplayMode}') 153 self.assertArgHasType(CGConfigureDisplayWithDisplayMode, 3, 154 b'^{__CFDictionary=}') 155 156 157if __name__ == "__main__": 158 main() 159