fe8127147c8a1608e1c04eaa31a5d3ef5000326f
2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for CreateFontIndirect
5 * PROGRAMMERS: Timo Kreuzer
13 Test_CreateFontIndirectA(void)
18 ENUMLOGFONTEXDVW elfedv2
;
20 logfont
.lfHeight
= 12;
22 logfont
.lfEscapement
= 0;
23 logfont
.lfOrientation
= 0;
24 logfont
.lfWeight
= FW_NORMAL
;
26 logfont
.lfUnderline
= 0;
27 logfont
.lfStrikeOut
= 0;
28 logfont
.lfCharSet
= DEFAULT_CHARSET
;
29 logfont
.lfOutPrecision
= OUT_DEFAULT_PRECIS
;
30 logfont
.lfClipPrecision
= CLIP_DEFAULT_PRECIS
;
31 logfont
.lfQuality
= PROOF_QUALITY
;
32 logfont
.lfPitchAndFamily
= DEFAULT_PITCH
;
33 memset(logfont
.lfFaceName
, 'A', LF_FACESIZE
);
34 hFont
= CreateFontIndirectA(&logfont
);
35 ok(hFont
!= 0, "CreateFontIndirectA failed\n");
37 memset(&elfedv2
, 0, sizeof(elfedv2
));
38 ret
= GetObjectW(hFont
, sizeof(elfedv2
), &elfedv2
);
39 ok(ret
== sizeof(ENUMLOGFONTEXW
) + 2*sizeof(DWORD
), "ret = %ld\n", ret
);
40 ok(elfedv2
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == 0, "\n");
41 ok(elfedv2
.elfEnumLogfontEx
.elfFullName
[0] == 0, "\n");
45 Test_CreateFontIndirectW(void)
50 ENUMLOGFONTEXDVW elfedv2
;
52 logfont
.lfHeight
= 12;
54 logfont
.lfEscapement
= 0;
55 logfont
.lfOrientation
= 0;
56 logfont
.lfWeight
= FW_NORMAL
;
58 logfont
.lfUnderline
= 0;
59 logfont
.lfStrikeOut
= 0;
60 logfont
.lfCharSet
= DEFAULT_CHARSET
;
61 logfont
.lfOutPrecision
= OUT_DEFAULT_PRECIS
;
62 logfont
.lfClipPrecision
= CLIP_DEFAULT_PRECIS
;
63 logfont
.lfQuality
= PROOF_QUALITY
;
64 logfont
.lfPitchAndFamily
= DEFAULT_PITCH
;
65 memset(logfont
.lfFaceName
, 'A', LF_FACESIZE
* 2);
66 hFont
= CreateFontIndirectW(&logfont
);
67 ok(hFont
!= 0, "CreateFontIndirectW failed\n");
69 memset(&elfedv2
, 0, sizeof(elfedv2
));
70 ret
= GetObjectW(hFont
, sizeof(elfedv2
), &elfedv2
);
71 ok(ret
== sizeof(ENUMLOGFONTEXW
) + 2*sizeof(DWORD
), "\n");
72 ok(elfedv2
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == ((WCHAR
)'A' << 8) + 'A', "\n");
73 ok(elfedv2
.elfEnumLogfontEx
.elfFullName
[0] == 0, "\n");
74 /* Theres a bunch of data in elfFullName ... */
78 Test_CreateFontIndirectExA(void)
80 ENUMLOGFONTEXDVA elfedva
, elfedva2
;
81 ENUMLOGFONTEXDVW elfedvw
;
82 ENUMLOGFONTEXA
*penumlfa
;
87 memset(&elfedva
, 0, sizeof(elfedva
));
88 penumlfa
= &elfedva
.elfEnumLogfontEx
;
89 plogfonta
= &elfedva
.elfEnumLogfontEx
.elfLogFont
;
91 plogfonta
->lfHeight
= 12;
92 plogfonta
->lfWidth
= 0;
93 plogfonta
->lfEscapement
= 0;
94 plogfonta
->lfOrientation
= 0;
95 plogfonta
->lfWeight
= FW_NORMAL
;
96 plogfonta
->lfItalic
= 0;
97 plogfonta
->lfUnderline
= 0;
98 plogfonta
->lfStrikeOut
= 0;
99 plogfonta
->lfCharSet
= DEFAULT_CHARSET
;
100 plogfonta
->lfOutPrecision
= OUT_DEFAULT_PRECIS
;
101 plogfonta
->lfClipPrecision
= CLIP_DEFAULT_PRECIS
;
102 plogfonta
->lfQuality
= PROOF_QUALITY
;
103 plogfonta
->lfPitchAndFamily
= DEFAULT_PITCH
;
105 memset(plogfonta
->lfFaceName
, 'A', LF_FACESIZE
* sizeof(WCHAR
));
106 memset(penumlfa
->elfFullName
, 'B', LF_FULLFACESIZE
* sizeof(WCHAR
));
108 hFont
= CreateFontIndirectExA(&elfedva
);
109 ok(hFont
!= 0, "CreateFontIndirectExA failed\n");
111 ret
= GetObjectW(hFont
, sizeof(elfedvw
), &elfedvw
);
112 ok(ret
== sizeof(ENUMLOGFONTEXW
) + 2*sizeof(DWORD
), "\n");
113 ok(elfedvw
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == 0, "\n");
114 ok(elfedvw
.elfEnumLogfontEx
.elfFullName
[LF_FULLFACESIZE
-1] == 0, "\n");
116 memset(&elfedva2
, 0, sizeof(elfedva2
));
117 ret
= GetObjectA(hFont
, sizeof(elfedva2
), &elfedva2
);
118 ok(ret
== sizeof(ENUMLOGFONTEXDVA
), "ret = %ld\n", ret
);
119 ok(elfedva2
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == 0, "\n");
120 ok(elfedva2
.elfEnumLogfontEx
.elfFullName
[LF_FULLFACESIZE
-1] == 0, "\n");
124 Test_CreateFontIndirectExW(void)
126 ENUMLOGFONTEXDVW elfedv
, elfedv2
;
127 ENUMLOGFONTEXDVA elfedva
;
128 ENUMLOGFONTEXW
*penumlfw
;
133 memset(&elfedv
, 0, sizeof(elfedv
));
134 penumlfw
= &elfedv
.elfEnumLogfontEx
;
135 plogfontw
= &elfedv
.elfEnumLogfontEx
.elfLogFont
;
137 plogfontw
->lfHeight
= 12;
138 plogfontw
->lfWidth
= 0;
139 plogfontw
->lfEscapement
= 0;
140 plogfontw
->lfOrientation
= 0;
141 plogfontw
->lfWeight
= FW_NORMAL
;
142 plogfontw
->lfItalic
= 0;
143 plogfontw
->lfUnderline
= 0;
144 plogfontw
->lfStrikeOut
= 0;
145 plogfontw
->lfCharSet
= DEFAULT_CHARSET
;
146 plogfontw
->lfOutPrecision
= OUT_DEFAULT_PRECIS
;
147 plogfontw
->lfClipPrecision
= CLIP_DEFAULT_PRECIS
;
148 plogfontw
->lfQuality
= PROOF_QUALITY
;
149 plogfontw
->lfPitchAndFamily
= DEFAULT_PITCH
;
151 memset(plogfontw
->lfFaceName
, 'A', LF_FACESIZE
* sizeof(WCHAR
));
152 memset(penumlfw
->elfFullName
, 'B', LF_FULLFACESIZE
* sizeof(WCHAR
));
154 hFont
= CreateFontIndirectExW(&elfedv
);
155 ok(hFont
!= 0, "CreateFontIndirectExW failed\n");
157 memset(&elfedv2
, 0, sizeof(elfedv2
));
158 ret
= GetObjectW(hFont
, sizeof(elfedv2
), &elfedv2
);
159 ok(ret
== sizeof(ENUMLOGFONTEXW
) + 2*sizeof(DWORD
), "\n");
160 ok(elfedv2
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == ((WCHAR
)'A' << 8) + 'A', "\n");
161 ok(elfedv2
.elfEnumLogfontEx
.elfFullName
[LF_FULLFACESIZE
-1] == ((WCHAR
)'B' << 8) + 'B', "\n");
163 memset(&elfedva
, 0, sizeof(elfedva
));
164 ret
= GetObjectA(hFont
, sizeof(elfedva
), &elfedva
);
165 ok(ret
== sizeof(ENUMLOGFONTEXDVA
), "\n");
166 ok(elfedva
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == '?', "\n");
167 ok(elfedva
.elfEnumLogfontEx
.elfFullName
[LF_FULLFACESIZE
-1] == 0, "\n");
171 START_TEST(CreateFontIndirect
)
173 Test_CreateFontIndirectA();
174 Test_CreateFontIndirectW();
175 Test_CreateFontIndirectExA();
176 Test_CreateFontIndirectExW();