1 /*
2  * PROJECT:         ReactOS api tests
3  * LICENSE:         GPL - See COPYING in the top level directory
4  * PURPOSE:         Test for Rectangle
5  * PROGRAMMERS:     J�r�me Gardou
6  */
7 
8 #include <apitest.h>
9 
10 #include <wingdi.h>
11 
12 void Test_Rectangle(void)
13 {
14     HDC hdc;
15     HBITMAP hBmp;
16     BOOL ret;
17     HBRUSH hBrush;
18     HPEN hPen;
19     COLORREF color;
20 
21     hdc = CreateCompatibleDC(NULL);
22     ok(hdc != NULL, "Failed to create the DC!\n");
23     hBmp = CreateCompatibleBitmap(hdc, 4, 4);
24     ok(hBmp != NULL, "Failed to create the Bitmap!\n");
25     hBmp = SelectObject(hdc, hBmp);
26     ok(hBmp != NULL, "Failed to select the Bitmap!\n");
27 
28     hBrush = CreateSolidBrush(RGB(0, 0, 0));
29     ok(hBrush != NULL, "Failed to create a solid brush!\n");
30     hBrush = SelectObject(hdc, hBrush);
31     ok(hBrush != NULL, "Failed to select the brush!\n");
32 
33     /* Blank the bitmap */
34     ret = BitBlt(hdc, 0, 0, 4, 4, NULL, 0, 0, WHITENESS);
35     ok(ret, "BitBlt failed to blank the bitmap!\n");
36 
37     /* Try inverted rectangle coordinates */
38     ret = Rectangle(hdc, 0, 2, 2, 0);
39     ok(ret, "Rectangle failed!");
40     color = GetPixel(hdc, 0, 0);
41     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
42     color = GetPixel(hdc, 2, 2);
43     ok( color == RGB(255, 255, 255), "Expected 0x00FFFFFF, got 0x%08x\n", (UINT)color);
44     color = GetPixel(hdc, 0, 2);
45     ok( color == RGB(255, 255, 255), "Expected 0x00FFFFFF, got 0x%08x\n", (UINT)color);
46     color = GetPixel(hdc, 2, 0);
47     ok( color == RGB(255, 255, 255), "Expected 0x00FFFFFF, got 0x%08x\n", (UINT)color);
48     color = GetPixel(hdc, 1, 1);
49     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
50 
51     ret = BitBlt(hdc, 0, 0, 4, 4, NULL, 0, 0, WHITENESS);
52     ok(ret, "BitBlt failed to blank the bitmap!\n");
53     /* Try well ordered rectangle coordinates */
54     ret = Rectangle(hdc, 0, 0, 2, 2);
55     ok(ret, "Rectangle failed!");
56     color = GetPixel(hdc, 0, 0);
57     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
58     color = GetPixel(hdc, 2, 2);
59     ok( color == RGB(255, 255, 255), "Expected 0x00FFFFFF, got 0x%08x\n", (UINT)color);
60     color = GetPixel(hdc, 0, 2);
61     ok( color == RGB(255, 255, 255), "Expected 0x00FFFFFF, got 0x%08x\n", (UINT)color);
62     color = GetPixel(hdc, 2, 0);
63     ok( color == RGB(255, 255, 255), "Expected 0x00FFFFFF, got 0x%08x\n", (UINT)color);
64     color = GetPixel(hdc, 1, 1);
65     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
66 
67     /* tests with NULL pen */
68     hPen = SelectObject(hdc, GetStockObject(NULL_PEN));
69 
70     /* Blank the bitmap */
71     ret = BitBlt(hdc, 0, 0, 4, 4, NULL, 0, 0, WHITENESS);
72     ok(ret, "BitBlt failed to blank the bitmap!\n");
73 
74     ret = Rectangle(hdc, 0, 0, 3, 3);
75     ok(ret, "Rectangle failed!");
76     color = GetPixel(hdc, 0, 0);
77     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
78     color = GetPixel(hdc, 2, 2);
79     ok( color == RGB(255, 255, 255), "Expected 0x00FFFFFF, got 0x%08x\n", (UINT)color);
80     color = GetPixel(hdc, 0, 2);
81     ok( color == RGB(255, 255, 255), "Expected 0x00FFFFFF, got 0x%08x\n", (UINT)color);
82     color = GetPixel(hdc, 2, 0);
83     ok( color == RGB(255, 255, 255), "Expected 0x00FFFFFF, got 0x%08x\n", (UINT)color);
84     color = GetPixel(hdc, 1, 1);
85     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
86 
87     SelectObject(hdc, hPen);
88 
89     /* Same tests with GM_ADVANCED */
90     ok(SetGraphicsMode(hdc, GM_ADVANCED) == GM_COMPATIBLE, "Default mode for the DC is not GM_COMPATIBLE.\n");
91 
92     /* Blank the bitmap */
93     ret = BitBlt(hdc, 0, 0, 4, 4, NULL, 0, 0, WHITENESS);
94     ok(ret, "BitBlt failed to blank the bitmap!\n");
95 
96     /* Try inverted rectangle coordinates */
97     ret = Rectangle(hdc, 0, 2, 2, 0);
98     ok(ret, "Rectangle failed!");
99     color = GetPixel(hdc, 0, 0);
100     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
101     color = GetPixel(hdc, 2, 2);
102     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
103     color = GetPixel(hdc, 0, 2);
104     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
105     color = GetPixel(hdc, 2, 0);
106     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
107     color = GetPixel(hdc, 1, 1);
108     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
109 
110     ret = BitBlt(hdc, 0, 0, 4, 4, NULL, 0, 0, WHITENESS);
111     ok(ret, "BitBlt failed to blank the bitmap!\n");
112     /* Try well ordered rectangle coordinates */
113     ret = Rectangle(hdc, 0, 0, 2, 2);
114     ok(ret, "Rectangle failed!");
115     color = GetPixel(hdc, 0, 0);
116     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
117     color = GetPixel(hdc, 2, 2);
118     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
119     color = GetPixel(hdc, 0, 2);
120     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
121     color = GetPixel(hdc, 2, 0);
122     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
123     color = GetPixel(hdc, 1, 1);
124     ok( color == RGB(0, 0, 0), "Expected 0, got 0x%08x\n", (UINT)color);
125 
126 
127     hBmp = SelectObject(hdc, hBmp);
128     hBrush = SelectObject(hdc, hBrush);
129     DeleteObject(hBmp);
130     DeleteObject(hBrush);
131     DeleteDC(hdc);
132 }
133 
134 
135 START_TEST(Rectangle)
136 {
137     Test_Rectangle();
138 }
139