Nikolay Sivov : dwrite/tests: Some tests for ReadFileFragment().
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Nov 18 10:25:19 CST 2014
Module: wine
Branch: master
Commit: e6cd0f7d8c4ad51135e0d56161258beb90905fca
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e6cd0f7d8c4ad51135e0d56161258beb90905fca
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Tue Nov 18 13:18:46 2014 +0300
dwrite/tests: Some tests for ReadFileFragment().
---
dlls/dwrite/tests/font.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index ba916a9..ed43839 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -2412,6 +2412,77 @@ static void test_CreateStreamFromKey(void)
DeleteFileW(test_fontfile);
}
+static void test_ReadFileFragment(void)
+{
+ IDWriteLocalFontFileLoader *localloader;
+ IDWriteFontFileStream *stream;
+ IDWriteFontFileLoader *loader;
+ IDWriteFactory *factory;
+ IDWriteFontFile *file;
+ const void *fragment, *fragment2;
+ void *key, *context, *context2;
+ UINT64 filesize;
+ UINT32 size;
+ HRESULT hr;
+
+ factory = create_factory();
+
+ create_testfontfile(test_fontfile);
+
+ hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file);
+ ok(hr == S_OK, "got 0x%08x\n",hr);
+
+ key = NULL;
+ size = 0;
+ hr = IDWriteFontFile_GetReferenceKey(file, (const void**)&key, &size);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(size != 0, "got %u\n", size);
+
+ hr = IDWriteFontFile_GetLoader(file, &loader);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ IDWriteFontFileLoader_QueryInterface(loader, &IID_IDWriteLocalFontFileLoader, (void**)&localloader);
+ IDWriteFontFileLoader_Release(loader);
+
+ hr = IDWriteLocalFontFileLoader_CreateStreamFromKey(localloader, key, size, &stream);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ hr = IDWriteFontFileStream_GetFileSize(stream, &filesize);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ /* reading past the end of the stream */
+ fragment = (void*)0xdeadbeef;
+ context = (void*)0xdeadbeef;
+ hr = IDWriteFontFileStream_ReadFileFragment(stream, &fragment, 0, filesize+1, &context);
+todo_wine {
+ ok(hr == E_FAIL, "got 0x%08x\n", hr);
+ ok(context == NULL, "got %p\n", context);
+ ok(fragment == NULL, "got %p\n", fragment);
+}
+ fragment = (void*)0xdeadbeef;
+ context = (void*)0xdeadbeef;
+ hr = IDWriteFontFileStream_ReadFileFragment(stream, &fragment, 0, filesize, &context);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+todo_wine
+ ok(context == NULL, "got %p\n", context);
+ ok(fragment != NULL, "got %p\n", fragment);
+
+ fragment2 = (void*)0xdeadbeef;
+ context2 = (void*)0xdeadbeef;
+ hr = IDWriteFontFileStream_ReadFileFragment(stream, &fragment2, 0, filesize, &context2);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+todo_wine {
+ ok(context2 == NULL, "got %p\n", context2);
+ ok(fragment == fragment2, "got %p, %p\n", fragment, fragment2);
+}
+ IDWriteFontFileStream_ReleaseFileFragment(stream, context);
+ IDWriteFontFileStream_ReleaseFileFragment(stream, context2);
+
+ IDWriteFontFileStream_Release(stream);
+ IDWriteLocalFontFileLoader_Release(localloader);
+ IDWriteFactory_Release(factory);
+ DeleteFileW(test_fontfile);
+}
+
START_TEST(font)
{
IDWriteFactory *factory;
@@ -2444,6 +2515,7 @@ START_TEST(font)
test_TryGetFontTable();
test_ConvertFontToLOGFONT();
test_CreateStreamFromKey();
+ test_ReadFileFragment();
IDWriteFactory_Release(factory);
}
More information about the wine-cvs
mailing list