dwrite/tests: Place test font file in temporary location, make sure it's deleted after the test.

This commit is contained in:
Nikolay Sivov 2015-02-24 08:05:05 +03:00 committed by Alexandre Julliard
parent bd58a7ca45
commit 3cfbfeca2b
2 changed files with 88 additions and 45 deletions

View File

@ -443,15 +443,20 @@ static IDWriteFontFace *create_fontface(void)
return fontface;
}
static void create_testfontfile(const WCHAR *filename)
static WCHAR *create_testfontfile(const WCHAR *filename)
{
static WCHAR pathW[MAX_PATH];
DWORD written;
HANDLE file;
HRSRC res;
void *ptr;
file = CreateFileW(filename, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
ok(file != INVALID_HANDLE_VALUE, "file creation failed\n");
GetTempPathW(sizeof(pathW)/sizeof(WCHAR), pathW);
lstrcatW(pathW, filename);
file = CreateFileW(pathW, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
ok(file != INVALID_HANDLE_VALUE, "file creation failed, at %s, error %d\n", wine_dbgstr_w(pathW),
GetLastError());
res = FindResourceA(GetModuleHandleA(NULL), (LPCSTR)MAKEINTRESOURCE(1), (LPCSTR)RT_RCDATA);
ok(res != 0, "couldn't find resource\n");
@ -459,6 +464,15 @@ static void create_testfontfile(const WCHAR *filename)
WriteFile(file, ptr, SizeofResource(GetModuleHandleA(NULL), res), &written, NULL);
ok(written == SizeofResource(GetModuleHandleA(NULL), res), "couldn't write resource\n");
CloseHandle(file);
return pathW;
}
#define DELETE_FONTFILE(filename) _delete_testfontfile(filename, __LINE__)
static void _delete_testfontfile(const WCHAR *filename, int line)
{
BOOL ret = DeleteFileW(filename);
ok_(__FILE__,line)(ret, "failed to delete file %s, error %d\n", wine_dbgstr_w(filename), GetLastError());
}
static IDWriteFontFace *create_testfontface(const WCHAR *filename)
@ -473,6 +487,7 @@ static IDWriteFontFace *create_testfontface(const WCHAR *filename)
hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE, 1, &file, 0,
DWRITE_FONT_SIMULATIONS_NONE, &face);
ok(hr == S_OK, "got 0x%08x\n", hr);
IDWriteFontFile_Release(file);
return face;
}
@ -1338,13 +1353,14 @@ static void test_GetGlyphPlacements(void)
DWRITE_SCRIPT_ANALYSIS sa;
FLOAT advances[2];
UINT32 count, len;
WCHAR *path;
HRESULT hr;
hr = IDWriteFactory_CreateTextAnalyzer(factory, &analyzer);
ok(hr == S_OK, "got 0x%08x\n", hr);
create_testfontfile(test_fontfile);
fontface = create_testfontface(test_fontfile);
path = create_testfontfile(test_fontfile);
fontface = create_testfontface(path);
get_script_analysis(aW, &sa);
count = 0;
@ -1429,7 +1445,8 @@ static void test_GetGlyphPlacements(void)
offsets[0].advanceOffset, offsets[0].ascenderOffset);
IDWriteTextAnalyzer_Release(analyzer);
DeleteFileW(test_fontfile);
IDWriteFontFace_Release(fontface);
DELETE_FONTFILE(path);
}
START_TEST(analyzer)

View File

@ -68,14 +68,20 @@ static IDWriteFactory *create_factory(void)
return factory;
}
static void create_testfontfile(const WCHAR *filename)
static WCHAR *create_testfontfile(const WCHAR *filename)
{
static WCHAR pathW[MAX_PATH];
DWORD written;
HANDLE file;
HRSRC res;
void *ptr;
file = CreateFileW(filename, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0 );
ok(file != INVALID_HANDLE_VALUE, "file creation failed, error %d\n", GetLastError());
GetTempPathW(sizeof(pathW)/sizeof(WCHAR), pathW);
lstrcatW(pathW, filename);
file = CreateFileW(pathW, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
ok(file != INVALID_HANDLE_VALUE, "file creation failed, at %s, error %d\n", wine_dbgstr_w(pathW),
GetLastError());
res = FindResourceA(GetModuleHandleA(NULL), (LPCSTR)MAKEINTRESOURCE(1), (LPCSTR)RT_RCDATA);
ok( res != 0, "couldn't find resource\n" );
@ -83,6 +89,15 @@ static void create_testfontfile(const WCHAR *filename)
WriteFile( file, ptr, SizeofResource( GetModuleHandleA(NULL), res ), &written, NULL );
ok( written == SizeofResource( GetModuleHandleA(NULL), res ), "couldn't write resource\n" );
CloseHandle( file );
return pathW;
}
#define DELETE_FONTFILE(filename) _delete_testfontfile(filename, __LINE__)
static void _delete_testfontfile(const WCHAR *filename, int line)
{
BOOL ret = DeleteFileW(filename);
ok_(__FILE__,line)(ret, "failed to delete file %s, error %d\n", wine_dbgstr_w(filename), GetLastError());
}
struct test_fontenumerator
@ -1027,6 +1042,7 @@ static void test_CreateFontFace(void)
LOGFONTW logfont;
BOOL supported;
UINT32 count;
WCHAR *path;
HRESULT hr;
factory = create_factory();
@ -1116,10 +1132,10 @@ if (0) /* crashes on native */
IDWriteFontCollection_Release(collection);
/* IDWriteFactory::CreateFontFace() */
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
factory = create_factory();
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &file);
ok(hr == S_OK, "got 0x%08x\n",hr);
supported = FALSE;
@ -1160,7 +1176,7 @@ todo_wine
IDWriteFontFile_Release(file);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
static void test_GetMetrics(void)
@ -1889,11 +1905,12 @@ static void test_CreateFontFileReference(void)
UINT32 count;
IDWriteFontFace *fface = NULL;
IDWriteFactory *factory;
WCHAR *path;
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
factory = create_factory();
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &ffile);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &ffile);
ok(hr == S_OK, "got 0x%08x\n",hr);
support = FALSE;
@ -1914,7 +1931,7 @@ static void test_CreateFontFileReference(void)
IDWriteFontFile_Release(ffile);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
static void test_shared_isolated(void)
@ -2037,6 +2054,7 @@ static void test_GetFontFromFontFace(void)
IDWriteFontFamily *family;
IDWriteFactory *factory;
IDWriteFontFile *file;
WCHAR *path;
HRESULT hr;
factory = create_factory();
@ -2079,9 +2097,9 @@ static void test_GetFontFromFontFace(void)
/* fontface that wasn't created from this collection */
factory = create_factory();
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &file);
ok(hr == S_OK, "got 0x%08x\n",hr);
hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &fontface);
@ -2098,7 +2116,7 @@ static void test_GetFontFromFontFace(void)
IDWriteFontFamily_Release(family);
IDWriteFontCollection_Release(collection);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
static IDWriteFont *get_tahoma_instance(IDWriteFactory *factory, DWRITE_FONT_STYLE style)
@ -2443,13 +2461,14 @@ static void test_TryGetFontTable(void)
WCHAR buffW[MAX_PATH];
BOOL exists, ret;
UINT32 size, len;
WCHAR *path;
HRESULT hr;
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
factory = create_factory();
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &file);
ok(hr == S_OK, "got 0x%08x\n",hr);
key = NULL;
@ -2458,7 +2477,7 @@ static void test_TryGetFontTable(void)
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(size != 0, "got %u\n", size);
ret = GetFileAttributesExW(test_fontfile, GetFileExInfoStandard, &info);
ret = GetFileAttributesExW(path, GetFileExInfoStandard, &info);
ok(ret, "got %d\n", ret);
ok(!memcmp(&info.ftLastWriteTime, &key->writetime, sizeof(key->writetime)), "got wrong write time\n");
@ -2501,7 +2520,7 @@ static void test_TryGetFontTable(void)
IDWriteFontFace_Release(fontface);
IDWriteFontFile_Release(file);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
static void test_ConvertFontToLOGFONT(void)
@ -2566,15 +2585,16 @@ static void test_CreateStreamFromKey(void)
IDWriteFactory *factory;
IDWriteFontFile *file;
UINT64 writetime;
WCHAR *path;
void *key;
UINT32 size;
HRESULT hr;
factory = create_factory();
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &file);
ok(hr == S_OK, "got 0x%08x\n",hr);
key = NULL;
@ -2613,7 +2633,7 @@ static void test_CreateStreamFromKey(void)
IDWriteLocalFontFileLoader_Release(localloader);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
static void test_ReadFileFragment(void)
@ -2627,13 +2647,14 @@ static void test_ReadFileFragment(void)
void *key, *context, *context2;
UINT64 filesize;
UINT32 size;
WCHAR *path;
HRESULT hr;
factory = create_factory();
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &file);
ok(hr == S_OK, "got 0x%08x\n",hr);
key = NULL;
@ -2690,7 +2711,7 @@ static void test_ReadFileFragment(void)
IDWriteFontFileStream_Release(stream);
IDWriteLocalFontFileLoader_Release(localloader);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
static void test_GetDesignGlyphMetrics(void)
@ -2701,13 +2722,14 @@ static void test_GetDesignGlyphMetrics(void)
IDWriteFontFile *file;
UINT16 indices[2];
UINT32 codepoint;
WCHAR *path;
HRESULT hr;
factory = create_factory();
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &file);
ok(hr == S_OK, "got 0x%08x\n",hr);
hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE, 1, &file,
@ -2740,7 +2762,7 @@ static void test_GetDesignGlyphMetrics(void)
IDWriteFontFace_Release(fontface);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
static void test_IsMonospacedFont(void)
@ -2807,13 +2829,14 @@ static void test_GetDesignGlyphAdvances(void)
IDWriteFontFace *fontface;
IDWriteFactory *factory;
IDWriteFontFile *file;
WCHAR *path;
HRESULT hr;
factory = create_factory();
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &file);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE, 1, &file,
@ -2850,7 +2873,7 @@ static void test_GetDesignGlyphAdvances(void)
IDWriteFontFace_Release(fontface);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
static void test_GetGlyphRunOutline(void)
@ -2862,12 +2885,13 @@ static void test_GetGlyphRunOutline(void)
UINT32 codepoint;
FLOAT advances[2];
UINT16 glyphs[2];
WCHAR *path;
HRESULT hr;
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
factory = create_factory();
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &file);
ok(hr == S_OK, "got 0x%08x\n",hr);
hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &face);
@ -2956,7 +2980,7 @@ static void test_GetGlyphRunOutline(void)
IDWriteFontFace_Release(face);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
static void test_GetEudcFontCollection(void)
@ -2995,12 +3019,13 @@ static void test_GetCaretMetrics(void)
IDWriteFactory *factory;
IDWriteFontFile *file;
IDWriteFont *font;
WCHAR *path;
HRESULT hr;
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
factory = create_factory();
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &file);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &fontface);
@ -3012,7 +3037,7 @@ static void test_GetCaretMetrics(void)
if (hr != S_OK) {
win_skip("GetCaretMetrics() is not supported.\n");
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
return;
}
@ -3060,7 +3085,7 @@ static void test_GetCaretMetrics(void)
IDWriteFontFace1_Release(fontface1);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
static void test_GetGlyphCount(void)
@ -3068,13 +3093,14 @@ static void test_GetGlyphCount(void)
IDWriteFontFace *fontface;
IDWriteFactory *factory;
IDWriteFontFile *file;
HRESULT hr;
UINT16 count;
WCHAR *path;
HRESULT hr;
create_testfontfile(test_fontfile);
path = create_testfontfile(test_fontfile);
factory = create_factory();
hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
hr = IDWriteFactory_CreateFontFileReference(factory, path, NULL, &file);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &fontface);
@ -3086,7 +3112,7 @@ static void test_GetGlyphCount(void)
IDWriteFontFace_Release(fontface);
IDWriteFactory_Release(factory);
DeleteFileW(test_fontfile);
DELETE_FONTFILE(path);
}
START_TEST(font)