mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 21:03:00 +00:00
[GDI32_APITEST] Improve GetFontResourceInfoW tests. Patch by Katayama Hirofumi MZ. ROSTESTS-269 #resolve #comment Thanks!
svn path=/trunk/; revision=74602
This commit is contained in:
parent
bbe72b0163
commit
f64b823282
3 changed files with 81 additions and 11 deletions
BIN
rostests/apitests/gdi32/ExampleFont.ttf
Normal file
BIN
rostests/apitests/gdi32/ExampleFont.ttf
Normal file
Binary file not shown.
|
@ -5,6 +5,7 @@
|
||||||
* PROGRAMMERS: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
* PROGRAMMERS: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||||
*/
|
*/
|
||||||
#include <apitest.h>
|
#include <apitest.h>
|
||||||
|
#include <winuser.h>
|
||||||
#include <wingdi.h>
|
#include <wingdi.h>
|
||||||
#include <winnls.h>
|
#include <winnls.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -16,6 +17,7 @@ BOOL WINAPI GetFontResourceInfoW(LPCWSTR lpFileName, DWORD *pdwBufSize, void* lp
|
||||||
typedef struct GFRI_ENTRY
|
typedef struct GFRI_ENTRY
|
||||||
{
|
{
|
||||||
LPCWSTR File;
|
LPCWSTR File;
|
||||||
|
BOOL Preinstalled;
|
||||||
WCHAR FontInfo[64];
|
WCHAR FontInfo[64];
|
||||||
INT FontCount;
|
INT FontCount;
|
||||||
WCHAR FaceNames[10][64];
|
WCHAR FaceNames[10][64];
|
||||||
|
@ -24,9 +26,9 @@ typedef struct GFRI_ENTRY
|
||||||
/* test entries */
|
/* test entries */
|
||||||
static const GFRI_ENTRY TestEntries[] =
|
static const GFRI_ENTRY TestEntries[] =
|
||||||
{
|
{
|
||||||
{ L"symbol.ttf", L"Symbol|", 1, { L"Symbol" } },
|
{ L"symbol.ttf", TRUE, L"Symbol|", 1, { L"Symbol" } },
|
||||||
{ L"tahoma.ttf", L"Tahoma|", 1, { L"Tahoma" } },
|
{ L"tahoma.ttf", TRUE, L"Tahoma|", 1, { L"Tahoma" } },
|
||||||
{ L"tahomabd.ttf", L"Tahoma Bold|", 1, { L"Tahoma" } }
|
{ L"tahomabd.ttf", TRUE, L"Tahoma Bold|", 1, { L"Tahoma" } }
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Japanese */
|
/* Japanese */
|
||||||
|
@ -34,7 +36,7 @@ static const GFRI_ENTRY AdditionalTestEntriesJapanese[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
/* MS Gothic & MS UI Gothic & MS PGothic */
|
/* MS Gothic & MS UI Gothic & MS PGothic */
|
||||||
L"msgothic.ttc",
|
L"msgothic.ttc", TRUE,
|
||||||
{
|
{
|
||||||
0xFF2D, 0xFF33, 0x0020, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0x0020,
|
0xFF2D, 0xFF33, 0x0020, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0x0020,
|
||||||
0x0026, 0x0020, 0x004D, 0x0053, 0x0020, 0x0055, 0x0049, 0x0020,
|
0x0026, 0x0020, 0x004D, 0x0053, 0x0020, 0x0055, 0x0049, 0x0020,
|
||||||
|
@ -51,6 +53,14 @@ static const GFRI_ENTRY AdditionalTestEntriesJapanese[] =
|
||||||
{ 0xFF2D, 0xFF33, 0x0020, 0xFF30, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 },
|
{ 0xFF2D, 0xFF33, 0x0020, 0xFF30, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 },
|
||||||
{ L'@', 0xFF2D, 0xFF33, 0x0020, 0xFF30, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 }
|
{ L'@', 0xFF2D, 0xFF33, 0x0020, 0xFF30, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 }
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
L"ExampleFont.ttf", FALSE,
|
||||||
|
L"JapaneseDisplayName|",
|
||||||
|
1,
|
||||||
|
{
|
||||||
|
L"JapaneseFamilyName"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -59,7 +69,7 @@ static const GFRI_ENTRY AdditionalTestEntriesEnglish[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
/* MS Gothic & MS UI Gothic & MS PGothic */
|
/* MS Gothic & MS UI Gothic & MS PGothic */
|
||||||
L"msgothic.ttc",
|
L"msgothic.ttc", TRUE,
|
||||||
L"MS Gothic & MS UI Gothic & MS PGothic|",
|
L"MS Gothic & MS UI Gothic & MS PGothic|",
|
||||||
6,
|
6,
|
||||||
{
|
{
|
||||||
|
@ -70,6 +80,14 @@ static const GFRI_ENTRY AdditionalTestEntriesEnglish[] =
|
||||||
L"MS PGothic",
|
L"MS PGothic",
|
||||||
L"@MS PGothic"
|
L"@MS PGothic"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
L"ExampleFont.ttf", FALSE,
|
||||||
|
L"EnglishDisplayName|",
|
||||||
|
1,
|
||||||
|
{
|
||||||
|
L"EnglishFamilyName"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -381,14 +399,56 @@ Test_GetFontResourceInfoW_case5(LPCWSTR pszFilePath, const GFRI_ENTRY *Entry)
|
||||||
static void
|
static void
|
||||||
DoEntry(const GFRI_ENTRY *Entry)
|
DoEntry(const GFRI_ENTRY *Entry)
|
||||||
{
|
{
|
||||||
WCHAR szPath[MAX_PATH];
|
WCHAR szPath[MAX_PATH], szTempPath[MAX_PATH];
|
||||||
|
BOOL Installed = FALSE;
|
||||||
|
|
||||||
GetSystemFontPath(szPath, Entry->File);
|
if (Entry->Preinstalled)
|
||||||
printf("GetSystemFontPath: %S\n", szPath);
|
|
||||||
if (GetFileAttributesW(szPath) == 0xFFFFFFFF)
|
|
||||||
{
|
{
|
||||||
skip("Font file \"%S\" was not found\n", szPath);
|
GetSystemFontPath(szPath, Entry->File);
|
||||||
return;
|
printf("GetSystemFontPath: %S\n", szPath);
|
||||||
|
if (GetFileAttributesW(szPath) == INVALID_FILE_ATTRIBUTES)
|
||||||
|
{
|
||||||
|
skip("Font file \"%S\" was not found\n", szPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* load font data from resource */
|
||||||
|
HANDLE hFile;
|
||||||
|
HMODULE hMod = GetModuleHandleW(NULL);
|
||||||
|
HRSRC hRsrc = FindResourceW(hMod, Entry->File, (LPCWSTR)RT_RCDATA);
|
||||||
|
HGLOBAL hGlobal = LoadResource(hMod, hRsrc);
|
||||||
|
DWORD Size = SizeofResource(hMod, hRsrc);
|
||||||
|
LPVOID pFont = LockResource(hGlobal);
|
||||||
|
|
||||||
|
/* get temporary file name */
|
||||||
|
GetTempPathW(_countof(szTempPath), szTempPath);
|
||||||
|
GetTempFileNameW(szTempPath, L"FNT", 0, szPath);
|
||||||
|
printf("GetTempFileNameW: %S\n", szPath);
|
||||||
|
|
||||||
|
/* write to file */
|
||||||
|
hFile = CreateFileW(szPath, GENERIC_WRITE, FILE_SHARE_READ, NULL,
|
||||||
|
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
WriteFile(hFile, pFont, Size, &Size, NULL);
|
||||||
|
CloseHandle(hFile);
|
||||||
|
|
||||||
|
/* check existence */
|
||||||
|
if (GetFileAttributesW(szPath) == INVALID_FILE_ATTRIBUTES)
|
||||||
|
{
|
||||||
|
skip("Font file \"%S\" was not stored\n", szPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* install */
|
||||||
|
Installed = !!AddFontResourceW(szPath);
|
||||||
|
if (!Installed)
|
||||||
|
{
|
||||||
|
skip("Font file \"%S\" was not installed\n", szPath);
|
||||||
|
RemoveFontResourceW(szPath);
|
||||||
|
DeleteFileW(szPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Test_GetFontResourceInfoW_case0(szPath, Entry);
|
Test_GetFontResourceInfoW_case0(szPath, Entry);
|
||||||
|
@ -397,6 +457,15 @@ DoEntry(const GFRI_ENTRY *Entry)
|
||||||
Test_GetFontResourceInfoW_case3(szPath, Entry);
|
Test_GetFontResourceInfoW_case3(szPath, Entry);
|
||||||
Test_GetFontResourceInfoW_case4(szPath, Entry);
|
Test_GetFontResourceInfoW_case4(szPath, Entry);
|
||||||
Test_GetFontResourceInfoW_case5(szPath, Entry);
|
Test_GetFontResourceInfoW_case5(szPath, Entry);
|
||||||
|
|
||||||
|
if (!Entry->Preinstalled)
|
||||||
|
{
|
||||||
|
if (Installed)
|
||||||
|
{
|
||||||
|
RemoveFontResourceW(szPath);
|
||||||
|
DeleteFileW(szPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
START_TEST(GetFontResourceInfoW)
|
START_TEST(GetFontResourceInfoW)
|
||||||
|
|
|
@ -4,3 +4,4 @@ ReactOSTestTahoma.ttf RCDATA ReactOSTestTahoma.ttf
|
||||||
PanosePitchTest.ttf RCDATA PanosePitchTest.ttf
|
PanosePitchTest.ttf RCDATA PanosePitchTest.ttf
|
||||||
TTCTestV.ttc RCDATA TTCTestV.ttc
|
TTCTestV.ttc RCDATA TTCTestV.ttc
|
||||||
Shadows_Into_Light.ttf RCDATA Shadows_Into_Light.ttf
|
Shadows_Into_Light.ttf RCDATA Shadows_Into_Light.ttf
|
||||||
|
ExampleFont.ttf RCDATA ExampleFont.ttf
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue