2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for SetWorldTransform
5 * PROGRAMMERS: Timo Kreuzer
11 void Test_SetWorldTransform()
16 //PGDI_TABLE_ENTRY pEntry;
20 hdcScreen
= GetDC(NULL
);
21 hdc
= CreateCompatibleDC(hdcScreen
);
22 ReleaseDC(NULL
, hdcScreen
);
23 SetGraphicsMode(hdc
, GM_ADVANCED
);
25 /* Set identity transform */
32 result
= SetWorldTransform(hdc
, &xform
);
33 ok(result
== 1, "SetWorldTransform should succeed\n");
37 result
= SetWorldTransform(hdc
, &xform
);
38 ok(result
== 0, "SetWorldTransform should fail\n");
43 result
= SetWorldTransform(hdc
, &xform
);
44 ok(result
== 0, "SetWorldTransform should fail\n");
46 /* Set values that result in the determinant being 0 */
51 result
= SetWorldTransform(hdc
, &xform
);
52 ok(result
== 0, "SetWorldTransform should fail\n");
54 /* Small modification to make the determinant != 0 */
55 xform
.eM12
= (FLOAT
)3.0001;
56 result
= SetWorldTransform(hdc
, &xform
);
57 ok(result
== 1, "SetWorldTransform should succeed\n");
59 /* Set values that result in the determinant being 0 due to rounding */
61 xform
.eM12
= (FLOAT
)0.9999999;
62 xform
.eM21
= (FLOAT
)1.0000001;
64 ok(xform
.eM12
!= (FLOAT
)1.0, "xform.eM12 shouldn't be 1.0\n");
65 ok(xform
.eM21
!= (FLOAT
)1.0, "xform.eM21 shouldn't be 1.0\n");
66 ok(xform
.eM12
* xform
.eM21
!= (FLOAT
)1.0, "xform.eM12 * xform.eM21 shouldn't be 1.0\n");
67 result
= SetWorldTransform(hdc
, &xform
);
68 ok(result
== 0, "SetWorldTransform should fail\n");
70 /* Test world transform (should be unchanged by previous failure) */
71 result
= GetWorldTransform(hdc
, &xform
);
72 ok(result
== 1, "GetWorldTransform should succeed\n");
73 ok(xform
.eM11
== 2, "xform.eM11 should be 2\n");
74 ok(xform
.eM12
== (FLOAT
)3.0001, "xform.eM12 should be 3.0001\n");
75 ok(xform
.eM21
== 4, "xform.eM21 should be 4\n");
76 ok(xform
.eM22
== 6, "xform.eM22 should be 6\n");
78 /* Set smallest possible values */
79 xform
.eM11
= 1.17549435e-38f
;
82 xform
.eM22
= 1.17549435e-38f
;
83 ok(xform
.eM11
!= (FLOAT
)0.0, "xform.eM11 shouldn't be 0.0\n");
84 ok(xform
.eM22
!= (FLOAT
)0.0, "xform.eM22 shouldn't be 0.0\n");
85 ok(xform
.eM11
* xform
.eM22
!= (FLOAT
)0.0, "xform.eM12 * xform.eM21 shouldn't be 0.0\n");
86 result
= SetWorldTransform(hdc
, &xform
);
87 ok(result
== 1, "SetWorldTransform should succeed\n");
89 /* Test world transform */
90 result
= GetWorldTransform(hdc
, &xform
);
91 ok(result
== 1, "GetWorldTransform should succeed\n");
92 ok(xform
.eM11
> 0, "xform.eM11 should not be 0\n");
93 ok(xform
.eM12
== 0, "xform.eM12 should be 0\n");
94 ok(xform
.eM21
== 0, "xform.eM21 should be 0\n");
95 ok(xform
.eM22
> 0, "xform.eM22 should not be 0\n");
101 result
= SetWorldTransform(hdc
, &xform
);
108 result
= SetWorldTransform(hdc
, &xform
);
111 result
= GetWorldTransform(hdc
, &xform
);
113 ok(xform
.eM11
== 0, "xform.eM11 should be 0\n");
114 ok(xform
.eM12
== 1, "xform.eM12 should be 1\n");
115 ok(xform
.eM21
== 1, "xform.eM21 should be 1\n");
116 ok(xform
.eM22
== 0, "xform.eM22 should be 0\n");
121 START_TEST(SetWorldTransform
)
123 Test_SetWorldTransform();