Adam Petaccia wrote:
--- dlls/gdiplus/tests/font.c | 81 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 81 insertions(+), 0 deletions(-)
diff --git a/dlls/gdiplus/tests/font.c b/dlls/gdiplus/tests/font.c index 3d30a86..b19f0aa 100644 --- a/dlls/gdiplus/tests/font.c +++ b/dlls/gdiplus/tests/font.c @@ -28,6 +28,7 @@ static const WCHAR arial[] = {'A','r','i','a','l','\0'}; static const WCHAR nonexistent[] = {'T','h','i','s','F','o','n','t','s','h','o','u','l','d','N','o','t','E','x','i','s','t','\0'}; static const WCHAR MSSansSerif[] = {'M','S',' ','S','a','n','s',' ','S','e','r','i','f','\0'}; static const WCHAR MicrosoftSansSerif[] = {'M','i','c','r','o','s','o','f','t',' ','S','a','n','s',' ','S','e','r','i','f','\0'}; +static const WCHAR Tahoma[] = {'T','a','h','o','m','a','\0'}; static const WCHAR TimesNewRoman[] = {'T','i','m','e','s',' ','N','e','w',' ','R','o','m','a','n','\0'}; static const WCHAR CourierNew[] = {'C','o','u','r','i','e','r',' ','N','e','w','\0'};
@@ -333,6 +334,85 @@ monospace: expect (Ok, stat); }
+static void test_fontcollections(void) +{ + const static WCHAR tahomafilename[] = {'C',':','\\','W','I','N','D','O','W','S','\\','F','o','n','t','s','\\','T','a','h','o','m','a','.','t','t','f','\0'}; + const static WCHAR timesNRfilename[] = {'C',':','\\','W','I','N','D','O','W','S','\\','F','o','n','t','s','\\','T','i','m','e','s','.','t','t','f','\0'}; + const static WCHAR badFileName[] = {'C',':','\\','W','I','N','D','O','W','S','\\','F','o','n','t','s','\\','S','h','o','u','l','d','n','o','t','e','x','i','s','t','.','t','t','f','\0'}; + + static WCHAR familyName[LF_FACESIZE]; + GpStatus stat; + GpFontCollection* PrivateFontCollection; + GpFontFamily** fontFamily; + INT expected = 0, count = 0, i; + BOOL hastahoma, hastimesnr; + + stat = GdipNewPrivateFontCollection(&PrivateFontCollection); +todo_wine + expect(Ok, stat); + stat = GdipPrivateAddFontFile(PrivateFontCollection, NULL); + expect(InvalidParameter, stat); +todo_wine{ + stat = GdipPrivateAddFontFile(PrivateFontCollection, badFileName); + expect(FileNotFound, stat); + + stat = GdipPrivateAddFontFile(PrivateFontCollection, tahomafilename); + if (stat == Ok) + { + expected++; + hastahoma = TRUE; + } + + stat = GdipPrivateAddFontFile(PrivateFontCollection, timesNRfilename); + if (stat == Ok) + { + expected++; + hastimesnr = TRUE; + } + + stat = GdipGetFontCollectionFamilyCount(PrivateFontCollection, &count); + expect(Ok, stat); + expect(expected, count); + + expected = count; + + /* Test retrieving of installed fonts */ + fontFamily = GdipAlloc(sizeof(GpFontFamily*) * count); + stat = GdipGetFontCollectionFamilyList(PrivateFontCollection, count, + fontFamily, &count); + expect(Ok, stat); + expect(expected, count); + if (stat == Ok) + { + i = 0; + if (hastahoma) + { + GdipGetFamilyName(fontFamily[i], familyName, LANG_NEUTRAL); + ok(lstrcmpiW(familyName, Tahoma) == 0, "Expected Tahoma, got %s\n", + debugstr_w(familyName)); + i++; + } + + if (hastimesnr) + { + GdipGetFamilyName(fontFamily[i], familyName, LANG_NEUTRAL); + ok(lstrcmpiW(familyName, TimesNewRoman) == 0, "Expected Times New " + "Roman, got %s\n", debugstr_w(familyName)); + i++;
This i++ is redundant, isn't it?
+ } + } + + for (i = 0; i < count; i++) + { + stat = GdipDeleteFontFamily(fontFamily[i]); + expect(Ok, stat); + } +} + + stat = GdipDeletePrivateFontCollection(&PrivateFontCollection); + expect(Ok, stat); +} + START_TEST(font) { struct GdiplusStartupInput gdiplusStartupInput; @@ -350,6 +430,7 @@ START_TEST(font) test_fontfamily(); test_fontfamily_properties(); test_getgenerics(); + test_fontcollections();
GdiplusShutdown(gdiplusToken); }