1
2from PyObjCTools.TestSupport import *
3from Quartz.CoreGraphics import *
4
5try:
6    unicode
7except NameError:
8    unicode = str
9
10
11try:
12    long
13except NameError:
14    long = int
15class TestCGWindow (TestCase):
16    def testConstants(self):
17        self.assertEqual(kCGWindowIDCFNumberType, kCFNumberSInt32Type)
18        self.assertEqual(kCGNullWindowID, 0)
19        self.assertEqual(kCGWindowSharingNone, 0)
20        self.assertEqual(kCGWindowSharingReadOnly, 1)
21        self.assertEqual(kCGWindowSharingReadWrite, 2)
22        self.assertEqual(kCGBackingStoreRetained, 0)
23        self.assertEqual(kCGBackingStoreNonretained, 1)
24        self.assertEqual(kCGBackingStoreBuffered, 2)
25
26        self.assertIsInstance(kCGWindowNumber, unicode)
27        self.assertIsInstance(kCGWindowStoreType, unicode)
28        self.assertIsInstance(kCGWindowLayer, unicode)
29        self.assertIsInstance(kCGWindowBounds, unicode)
30        self.assertIsInstance(kCGWindowSharingState, unicode)
31        self.assertIsInstance(kCGWindowAlpha, unicode)
32        self.assertIsInstance(kCGWindowOwnerPID, unicode)
33        self.assertIsInstance(kCGWindowMemoryUsage, unicode)
34        self.assertIsInstance(kCGWindowWorkspace, unicode)
35        self.assertIsInstance(kCGWindowOwnerName, unicode)
36        self.assertIsInstance(kCGWindowName, unicode)
37        self.assertIsInstance(kCGWindowIsOnscreen, unicode)
38        self.assertIsInstance(kCGWindowBackingLocationVideoMemory, unicode)
39
40        self.assertEqual(kCGWindowListOptionAll, 0)
41        self.assertEqual(kCGWindowListOptionOnScreenOnly, (1 << 0))
42        self.assertEqual(kCGWindowListOptionOnScreenAboveWindow, (1 << 1))
43        self.assertEqual(kCGWindowListOptionOnScreenBelowWindow, (1 << 2))
44        self.assertEqual(kCGWindowListOptionIncludingWindow, (1 << 3))
45        self.assertEqual(kCGWindowListExcludeDesktopElements, (1 << 4))
46
47        self.assertEqual(kCGWindowImageDefault, 0)
48        self.assertEqual(kCGWindowImageBoundsIgnoreFraming, (1 << 0))
49        self.assertEqual(kCGWindowImageShouldBeOpaque, (1 << 1))
50        self.assertEqual(kCGWindowImageOnlyShadows, (1 << 2))
51
52
53    def testFunctions(self):
54
55        self.assertResultIsCFRetained(CGWindowListCopyWindowInfo)
56        v = CGWindowListCopyWindowInfo(0, 0)
57        self.assertIsInstance(v, CFArrayRef)
58        self.assertTrue(len(v) > 0)
59        self.assertIsInstance(v[0], CFDictionaryRef)
60
61        v = CGWindowListCreate(0, 0)
62        self.assertIsInstance(v, tuple)
63        self.assertTrue(len(v) > 0)
64        self.assertIsInstance(v[0], (int, long))
65
66        aWindowID = v[0]
67        windowArray = v
68
69        v = CGWindowListCreateDescriptionFromArray(v)
70        self.assertIsInstance(v, CFArrayRef)
71        self.assertTrue(len(v) > 0)
72        self.assertIsInstance(v[0], CFDictionaryRef)
73
74        self.assertResultIsCFRetained(CGWindowListCreateImage)
75        v = CGWindowListCreateImage(((0, 0), (100, 100)), aWindowID, 0, 0)
76        self.assertIsInstance(v, CGImageRef)
77
78        v = CGWindowListCreateImageFromArray(((0, 0), (100, 100)), windowArray, 0)
79        self.assertIsInstance(v, CGImageRef)
80
81if __name__ == "__main__":
82    main()
83