3 Test_CreateFontIndirectA(PTESTINFO pti
)
8 ENUMLOGFONTEXDVW elfedv2
;
10 logfont
.lfHeight
= 12;
12 logfont
.lfEscapement
= 0;
13 logfont
.lfOrientation
= 0;
14 logfont
.lfWeight
= FW_NORMAL
;
16 logfont
.lfUnderline
= 0;
17 logfont
.lfStrikeOut
= 0;
18 logfont
.lfCharSet
= DEFAULT_CHARSET
;
19 logfont
.lfOutPrecision
= OUT_DEFAULT_PRECIS
;
20 logfont
.lfClipPrecision
= CLIP_DEFAULT_PRECIS
;
21 logfont
.lfQuality
= PROOF_QUALITY
;
22 logfont
.lfPitchAndFamily
= DEFAULT_PITCH
;
23 memset(logfont
.lfFaceName
, 'A', LF_FACESIZE
);
24 hFont
= CreateFontIndirectA(&logfont
);
27 memset(&elfedv2
, 0, sizeof(elfedv2
));
28 ret
= GetObjectW(hFont
, sizeof(elfedv2
), &elfedv2
);
29 TEST(ret
== sizeof(ENUMLOGFONTEXW
) + 2*sizeof(DWORD
));
30 TEST(elfedv2
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == 0);
31 TEST(elfedv2
.elfEnumLogfontEx
.elfFullName
[0] == 0);
33 return APISTATUS_NORMAL
;
37 Test_CreateFontIndirectW(PTESTINFO pti
)
42 ENUMLOGFONTEXDVW elfedv2
;
44 logfont
.lfHeight
= 12;
46 logfont
.lfEscapement
= 0;
47 logfont
.lfOrientation
= 0;
48 logfont
.lfWeight
= FW_NORMAL
;
50 logfont
.lfUnderline
= 0;
51 logfont
.lfStrikeOut
= 0;
52 logfont
.lfCharSet
= DEFAULT_CHARSET
;
53 logfont
.lfOutPrecision
= OUT_DEFAULT_PRECIS
;
54 logfont
.lfClipPrecision
= CLIP_DEFAULT_PRECIS
;
55 logfont
.lfQuality
= PROOF_QUALITY
;
56 logfont
.lfPitchAndFamily
= DEFAULT_PITCH
;
57 memset(logfont
.lfFaceName
, 'A', LF_FACESIZE
* 2);
58 hFont
= CreateFontIndirectW(&logfont
);
61 memset(&elfedv2
, 0, sizeof(elfedv2
));
62 ret
= GetObjectW(hFont
, sizeof(elfedv2
), &elfedv2
);
63 TEST(ret
== sizeof(ENUMLOGFONTEXW
) + 2*sizeof(DWORD
));
64 TEST(elfedv2
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == ((WCHAR
)'A' << 8) + 'A');
65 TEST(elfedv2
.elfEnumLogfontEx
.elfFullName
[0] == 0);
66 /* Theres a bunch of data in elfFullName ... */
68 return APISTATUS_NORMAL
;
72 Test_CreateFontIndirectExA(PTESTINFO pti
)
74 ENUMLOGFONTEXDVA elfedva
, elfedva2
;
75 ENUMLOGFONTEXDVW elfedvw
;
76 ENUMLOGFONTEXA
*penumlfa
;
81 memset(&elfedva
, 0, sizeof(elfedva
));
82 penumlfa
= &elfedva
.elfEnumLogfontEx
;
83 plogfonta
= &elfedva
.elfEnumLogfontEx
.elfLogFont
;
85 plogfonta
->lfHeight
= 12;
86 plogfonta
->lfWidth
= 0;
87 plogfonta
->lfEscapement
= 0;
88 plogfonta
->lfOrientation
= 0;
89 plogfonta
->lfWeight
= FW_NORMAL
;
90 plogfonta
->lfItalic
= 0;
91 plogfonta
->lfUnderline
= 0;
92 plogfonta
->lfStrikeOut
= 0;
93 plogfonta
->lfCharSet
= DEFAULT_CHARSET
;
94 plogfonta
->lfOutPrecision
= OUT_DEFAULT_PRECIS
;
95 plogfonta
->lfClipPrecision
= CLIP_DEFAULT_PRECIS
;
96 plogfonta
->lfQuality
= PROOF_QUALITY
;
97 plogfonta
->lfPitchAndFamily
= DEFAULT_PITCH
;
99 memset(plogfonta
->lfFaceName
, 'A', LF_FACESIZE
* sizeof(WCHAR
));
100 memset(penumlfa
->elfFullName
, 'B', LF_FULLFACESIZE
* sizeof(WCHAR
));
102 hFont
= CreateFontIndirectExA(&elfedva
);
105 ret
= GetObjectW(hFont
, sizeof(elfedvw
), &elfedvw
);
106 TEST(ret
== sizeof(ENUMLOGFONTEXW
) + 2*sizeof(DWORD
));
107 TEST(elfedvw
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == 0);
108 TEST(elfedvw
.elfEnumLogfontEx
.elfFullName
[LF_FULLFACESIZE
-1] == 0);
110 memset(&elfedva2
, 0, sizeof(elfedva2
));
111 ret
= GetObjectA(hFont
, sizeof(elfedva2
), &elfedva2
);
112 TEST(ret
== sizeof(ENUMLOGFONTEXDVA
));
113 TEST(elfedva2
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == 0);
114 TEST(elfedva2
.elfEnumLogfontEx
.elfFullName
[LF_FULLFACESIZE
-1] == 0);
116 return APISTATUS_NORMAL
;
120 Test_CreateFontIndirectExW(PTESTINFO pti
)
122 ENUMLOGFONTEXDVW elfedv
, elfedv2
;
123 ENUMLOGFONTEXDVA elfedva
;
124 ENUMLOGFONTEXW
*penumlfw
;
129 memset(&elfedv
, 0, sizeof(elfedv
));
130 penumlfw
= &elfedv
.elfEnumLogfontEx
;
131 plogfontw
= &elfedv
.elfEnumLogfontEx
.elfLogFont
;
133 plogfontw
->lfHeight
= 12;
134 plogfontw
->lfWidth
= 0;
135 plogfontw
->lfEscapement
= 0;
136 plogfontw
->lfOrientation
= 0;
137 plogfontw
->lfWeight
= FW_NORMAL
;
138 plogfontw
->lfItalic
= 0;
139 plogfontw
->lfUnderline
= 0;
140 plogfontw
->lfStrikeOut
= 0;
141 plogfontw
->lfCharSet
= DEFAULT_CHARSET
;
142 plogfontw
->lfOutPrecision
= OUT_DEFAULT_PRECIS
;
143 plogfontw
->lfClipPrecision
= CLIP_DEFAULT_PRECIS
;
144 plogfontw
->lfQuality
= PROOF_QUALITY
;
145 plogfontw
->lfPitchAndFamily
= DEFAULT_PITCH
;
147 memset(plogfontw
->lfFaceName
, 'A', LF_FACESIZE
* sizeof(WCHAR
));
148 memset(penumlfw
->elfFullName
, 'B', LF_FULLFACESIZE
* sizeof(WCHAR
));
150 hFont
= CreateFontIndirectExW(&elfedv
);
153 memset(&elfedv2
, 0, sizeof(elfedv2
));
154 ret
= GetObjectW(hFont
, sizeof(elfedv2
), &elfedv2
);
155 TEST(ret
== sizeof(ENUMLOGFONTEXW
) + 2*sizeof(DWORD
));
156 TEST(elfedv2
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == ((WCHAR
)'A' << 8) + 'A');
157 TEST(elfedv2
.elfEnumLogfontEx
.elfFullName
[LF_FULLFACESIZE
-1] == ((WCHAR
)'B' << 8) + 'B');
159 memset(&elfedva
, 0, sizeof(elfedva
));
160 ret
= GetObjectA(hFont
, sizeof(elfedva
), &elfedva
);
161 TEST(ret
== sizeof(ENUMLOGFONTEXDVA
));
162 TEST(elfedva
.elfEnumLogfontEx
.elfLogFont
.lfFaceName
[LF_FACESIZE
-1] == '?');
163 TEST(elfedva
.elfEnumLogfontEx
.elfFullName
[LF_FULLFACESIZE
-1] == 0);
165 return APISTATUS_NORMAL
;
170 Test_CreateFontIndirect(PTESTINFO pti
)
173 Test_CreateFontIndirectA(pti
);
174 Test_CreateFontIndirectW(pti
);
175 Test_CreateFontIndirectExA(pti
);
176 Test_CreateFontIndirectExW(pti
);
179 return APISTATUS_NORMAL
;