Benjamin Arai : oleaut32: OLEFontImpl_GetIDsOfNames conformance test.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Jul 21 04:14:30 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 31e3ad7150f5e308e5ead6f49fa0e87f7d2bafc4
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=31e3ad7150f5e308e5ead6f49fa0e87f7d2bafc4
Author: Benjamin Arai <me at benjaminarai.com>
Date: Wed Jul 19 18:08:38 2006 -0700
oleaut32: OLEFontImpl_GetIDsOfNames conformance test.
---
dlls/oleaut32/tests/olefont.c | 111 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 111 insertions(+), 0 deletions(-)
diff --git a/dlls/oleaut32/tests/olefont.c b/dlls/oleaut32/tests/olefont.c
index 9525eb3..e17d66a 100644
--- a/dlls/oleaut32/tests/olefont.c
+++ b/dlls/oleaut32/tests/olefont.c
@@ -2,6 +2,7 @@
* OLEFONT test program
*
* Copyright 2003 Marcus Meissner
+ * Copyright 2006 (Google) Benjamin Arai
*
*
* This library is free software; you can redistribute it and/or
@@ -295,6 +296,115 @@ static void test_font_events_disp(void)
IFont_Release(pFont2);
}
+void test_names_ids(WCHAR* w_name_1, const char* a_name_1,
+ WCHAR* w_name_2, const char* a_name_2,
+ LCID lcid, DISPID id_1, DISPID id_2,
+ HRESULT hres_expect, int numnames)
+{
+ LPVOID pvObj = NULL;
+ IFontDisp *fontdisp = NULL;
+ HRESULT hres;
+ DISPID rgDispId[2] = {0xdeadbeef, 0xdeadbeef};
+ LPOLESTR names[2] = {w_name_1, w_name_2};
+
+ pOleCreateFontIndirect(NULL, &IID_IFontDisp, &pvObj);
+ fontdisp = pvObj;
+
+ hres = IFontDisp_GetIDsOfNames(fontdisp, &IID_NULL, names, numnames,
+ lcid, rgDispId);
+
+ /* test hres */
+ ok(hres == hres_expect,
+ "GetIDsOfNames: \"%s\", \"%s\" returns 0x%08lx, expected 0x%08lx.\n",
+ a_name_1, a_name_2, hres, hres_expect);
+
+ /* test first DISPID */
+ ok(rgDispId[0]==id_1,
+ "GetIDsOfNames: \"%s\" gets DISPID 0x%08lx, expected 0x%08lx.\n",
+ a_name_1, rgDispId[0], id_1);
+
+ /* test second DISPID is present */
+ if (numnames == 2)
+ {
+ ok(rgDispId[1]==id_2,
+ "GetIDsOfNames: ..., \"%s\" gets DISPID 0x%08lx, expected 0x%08lx.\n",
+ a_name_2, rgDispId[1], id_2);
+ }
+
+ IFontDisp_Release(fontdisp);
+}
+
+void test_GetIDsOfNames(void)
+{
+ WCHAR name_Name[] = {'N','a','m','e',0};
+ WCHAR name_Italic[] = {'I','t','a','l','i','c',0};
+ WCHAR name_Size[] = {'S','i','z','e',0};
+ WCHAR name_Bold[] = {'B','o','l','d',0};
+ WCHAR name_Underline[] = {'U','n','d','e','r','l','i','n','e',0};
+ WCHAR name_Strikethrough[] = {'S','t','r','i','k','e','t','h','r','o','u','g','h',0};
+ WCHAR name_Weight[] = {'W','e','i','g','h','t',0};
+ WCHAR name_Charset[] = {'C','h','a','r','s','e','t',0};
+ WCHAR name_Foo[] = {'F','o','o',0};
+ WCHAR name_nAmE[] = {'n','A','m','E',0};
+ WCHAR name_Nom[] = {'N','o','m',0};
+
+ LCID en_us = MAKELCID(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),
+ SORT_DEFAULT);
+ LCID fr_fr = MAKELCID(MAKELANGID(LANG_FRENCH,SUBLANG_FRENCH),
+ SORT_DEFAULT);
+
+ /* Test DISPID_FONTs for the various properties. */
+ test_names_ids(name_Name, "Name", NULL, "", en_us,
+ DISPID_FONT_NAME, 0, S_OK,1);
+ test_names_ids(name_Size, "Size", NULL, "", en_us,
+ DISPID_FONT_SIZE, 0, S_OK,1);
+ test_names_ids(name_Bold, "Bold", NULL, "", en_us,
+ DISPID_FONT_BOLD, 0, S_OK,1);
+ test_names_ids(name_Italic, "Italic", NULL, "", en_us,
+ DISPID_FONT_ITALIC, 0, S_OK,1);
+ test_names_ids(name_Underline, "Underline", NULL, "", en_us,
+ DISPID_FONT_UNDER, 0, S_OK,1);
+ test_names_ids(name_Strikethrough, "Strikethrough", NULL, "", en_us,
+ DISPID_FONT_STRIKE, 0, S_OK,1);
+ test_names_ids(name_Weight, "Weight", NULL, "", en_us,
+ DISPID_FONT_WEIGHT, 0, S_OK,1);
+ test_names_ids(name_Charset, "Charset", NULL, "", en_us,
+ DISPID_FONT_CHARSET, 0, S_OK,1);
+
+ /* Capitalization doesn't matter. */
+ test_names_ids(name_nAmE, "nAmE", NULL, "", en_us,
+ DISPID_FONT_NAME, 0, S_OK,1);
+
+ /* Unknown name. */
+ test_names_ids(name_Foo, "Foo", NULL, "", en_us,
+ DISPID_UNKNOWN, 0, DISP_E_UNKNOWNNAME,1);
+
+ /* Pass several names: first is processed, */
+ /* second gets DISPID_UNKNOWN and doesn't affect retval. */
+ test_names_ids(name_Italic, "Italic", name_Name, "Name", en_us,
+ DISPID_FONT_ITALIC, DISPID_UNKNOWN, S_OK,2);
+ test_names_ids(name_Italic, "Italic", name_Foo, "Foo", en_us,
+ DISPID_FONT_ITALIC, DISPID_UNKNOWN, S_OK,2);
+
+ /* Locale ID has no effect. */
+ test_names_ids(name_Name, "Name", NULL, "", fr_fr,
+ DISPID_FONT_NAME, 0, S_OK,1);
+ test_names_ids(name_Nom, "This is not a font", NULL, "", fr_fr,
+ DISPID_UNKNOWN, 0, DISP_E_UNKNOWNNAME,1);
+
+ /* One of the arguments are invalid */
+ test_names_ids(name_Name, "Name", NULL, "", en_us,
+ 0xdeadbeef, 0xdeadbeef, E_INVALIDARG,0);
+ test_names_ids(name_Italic, "Italic", NULL, "", en_us,
+ 0xdeadbeef, 0xdeadbeef, E_INVALIDARG,0);
+ test_names_ids(name_Foo, "Foo", NULL, "", en_us,
+ 0xdeadbeef, 0xdeadbeef, E_INVALIDARG,0);
+
+ /* Crazy locale ID? */
+ test_names_ids(name_Name, "Name", NULL, "", -1,
+ DISPID_FONT_NAME, 0, S_OK,1);
+}
+
START_TEST(olefont)
{
hOleaut32 = LoadLibraryA("oleaut32.dll");
@@ -316,4 +426,5 @@ START_TEST(olefont)
/* test_ifont_sizes(186000, 0, 72, 2540, -19, "rounding"); */ /* test rounding */
test_font_events_disp();
+ test_GetIDsOfNames();
}
More information about the wine-cvs
mailing list