1*c2c66affSColin Finck /*
2*c2c66affSColin Finck  * PROJECT:         ReactOS bug regression tests
3*c2c66affSColin Finck  * LICENSE:         GPL - See COPYING in the top level directory
4*c2c66affSColin Finck  * FILE:            rostests/regtests/bugs/bug3481.c
5*c2c66affSColin Finck  * PURPOSE:         Test for bug 3481
6*c2c66affSColin Finck  * PROGRAMMERS:     Timo Kreuzer
7*c2c66affSColin Finck  */
8*c2c66affSColin Finck 
9*c2c66affSColin Finck #include <stdio.h>
10*c2c66affSColin Finck #include <wine/test.h>
11*c2c66affSColin Finck #include <windows.h>
12*c2c66affSColin Finck 
13*c2c66affSColin Finck #define COUNT 26
14*c2c66affSColin Finck 
Test_bug3481()15*c2c66affSColin Finck void Test_bug3481()
16*c2c66affSColin Finck {
17*c2c66affSColin Finck     const char text[COUNT] = "abcdefghijklmnopqrstuvmxyz";
18*c2c66affSColin Finck     WORD agi[COUNT];
19*c2c66affSColin Finck     INT i, aiWidth1[COUNT], aiWidth2[COUNT];
20*c2c66affSColin Finck     BOOL result;
21*c2c66affSColin Finck     HDC hdc;
22*c2c66affSColin Finck     SIZE size1, size2;
23*c2c66affSColin Finck 
24*c2c66affSColin Finck     /* Create a DC */
25*c2c66affSColin Finck     hdc = CreateCompatibleDC(NULL);
26*c2c66affSColin Finck 
27*c2c66affSColin Finck     SelectObject(hdc, GetStockObject(DEFAULT_GUI_FONT));
28*c2c66affSColin Finck 
29*c2c66affSColin Finck     /* Convert the charcaters into glyph indices */
30*c2c66affSColin Finck     result = GetGlyphIndicesA(hdc, text, COUNT, agi, 0);
31*c2c66affSColin Finck     ok(result != 0, "result=%d, GetLastError()=%ld\n", result, GetLastError());
32*c2c66affSColin Finck 
33*c2c66affSColin Finck     /* Get the size of the string */
34*c2c66affSColin Finck     result = GetTextExtentPoint32A(hdc, text, COUNT, &size1);
35*c2c66affSColin Finck     ok(result != 0, "result=%d, GetLastError()=%ld\n", result, GetLastError());
36*c2c66affSColin Finck 
37*c2c66affSColin Finck     /* Get the size from glyph indices */
38*c2c66affSColin Finck     result = GetTextExtentPointI(hdc, agi, COUNT, &size2);
39*c2c66affSColin Finck     ok(result != 0, "result=%d, GetLastError()=%ld\n", result, GetLastError());
40*c2c66affSColin Finck 
41*c2c66affSColin Finck     /* Compare sizes */
42*c2c66affSColin Finck     ok(size1.cx == size2.cx, "Sizes don't match. size1.cx=%ld, size2.cx=%ld\n", size1.cx, size2.cx);
43*c2c66affSColin Finck     ok(size1.cy == size2.cy, "Sizes don't match. size1.cy=%ld, size2.cy=%ld\n", size1.cy, size2.cy);
44*c2c66affSColin Finck 
45*c2c66affSColin Finck     /* Get the size of the string */
46*c2c66affSColin Finck     result = GetTextExtentExPointA(hdc, text, COUNT, MAXLONG, NULL, aiWidth1, &size1);
47*c2c66affSColin Finck     ok(result != 0, "result=%d, GetLastError()=%ld\n", result, GetLastError());
48*c2c66affSColin Finck 
49*c2c66affSColin Finck     /* Get the size from glyph indices */
50*c2c66affSColin Finck     result = GetTextExtentExPointI(hdc, agi, COUNT, MAXLONG, NULL, aiWidth2, &size2);
51*c2c66affSColin Finck     ok(result != 0, "result=%d, GetLastError()=%ld\n", result, GetLastError());
52*c2c66affSColin Finck 
53*c2c66affSColin Finck     /* Compare sizes */
54*c2c66affSColin Finck     ok(size1.cx == size2.cx, "Sizes don't match. size1.cx=%ld, size2.cx=%ld\n", size1.cx, size2.cx);
55*c2c66affSColin Finck     ok(size1.cy == size2.cy, "Sizes don't match. size1.cy=%ld, size2.cy=%ld\n", size1.cy, size2.cy);
56*c2c66affSColin Finck 
57*c2c66affSColin Finck     /* Loop all characters */
58*c2c66affSColin Finck     for (i = 0; i < COUNT; i++)
59*c2c66affSColin Finck     {
60*c2c66affSColin Finck         /* Check if we got identical spacing values */
61*c2c66affSColin Finck         ok(aiWidth1[i] == aiWidth2[i], "wrong spacing, i=%d, char:%d, index:%d\n", i, aiWidth1[i], aiWidth2[i]);
62*c2c66affSColin Finck     }
63*c2c66affSColin Finck 
64*c2c66affSColin Finck     /* Cleanup */
65*c2c66affSColin Finck     DeleteDC(hdc);
66*c2c66affSColin Finck }
67*c2c66affSColin Finck 
START_TEST(bug3481)68*c2c66affSColin Finck START_TEST(bug3481)
69*c2c66affSColin Finck {
70*c2c66affSColin Finck     Test_bug3481();
71*c2c66affSColin Finck }
72*c2c66affSColin Finck 
73