Author: tfaber Date: Mon Oct 13 12:25:30 2014 New Revision: 64719
URL: http://svn.reactos.org/svn/reactos?rev=64719&view=rev Log: [GDI32_APITEST] - Add a test for EnumFontFamilies* returning no results CORE-8628
Added: trunk/rostests/apitests/gdi32/EnumFontFamilies.c (with props) Modified: trunk/rostests/apitests/gdi32/CMakeLists.txt trunk/rostests/apitests/gdi32/testlist.c
Modified: trunk/rostests/apitests/gdi32/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/CMakeLists.... ============================================================================== --- trunk/rostests/apitests/gdi32/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/apitests/gdi32/CMakeLists.txt [iso-8859-1] Mon Oct 13 12:25:30 2014 @@ -22,6 +22,7 @@ EngCreateSemaphore.c EngDeleteSemaphore.c EngReleaseSemaphore.c + EnumFontFamilies.c ExcludeClipRect.c ExtCreatePen.c GdiConvertBitmap.c
Added: trunk/rostests/apitests/gdi32/EnumFontFamilies.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/EnumFontFam... ============================================================================== --- trunk/rostests/apitests/gdi32/EnumFontFamilies.c (added) +++ trunk/rostests/apitests/gdi32/EnumFontFamilies.c [iso-8859-1] Mon Oct 13 12:25:30 2014 @@ -0,0 +1,175 @@ +/* + * PROJECT: ReactOS API tests + * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory + * PURPOSE: Test for EnumFontFamilies[Ex] + * PROGRAMMERS: Thomas Faber thomas.faber@reactos.org + */ + +#include <apitest.h> + +#include <wingdi.h> +#include <winddi.h> +#include <strsafe.h> + +static BYTE ContextContinue; +static BYTE ContextStop; + +static int EnumProcCalls; +static ENUMLOGFONTA LastFontA; +static ENUMLOGFONTW LastFontW; + +static +int +CALLBACK +EnumProcA( + _In_ const LOGFONTA *elf, + _In_ const TEXTMETRICA *ntm, + _In_ DWORD FontType, + _In_ LPARAM lParam) +{ + EnumProcCalls++; + + ok(lParam == (LPARAM)&ContextContinue || + lParam == (LPARAM)&ContextStop, + "Context is %p, expected %p or %p\n", + (PVOID)lParam, &ContextContinue, &ContextStop); + + LastFontA = *(ENUMLOGFONTA *)elf; + return lParam == (LPARAM)&ContextContinue ? 7 : 0; +} + +static +int +CALLBACK +EnumProcW( + _In_ const LOGFONTW *elf, + _In_ const TEXTMETRICW *ntm, + _In_ DWORD FontType, + _In_ LPARAM lParam) +{ + EnumProcCalls++; + + ok(lParam == (LPARAM)&ContextContinue || + lParam == (LPARAM)&ContextStop, + "Context is %p, expected %p or %p\n", + (PVOID)lParam, &ContextContinue, &ContextStop); + + LastFontW = *(ENUMLOGFONTW *)elf; + return lParam == (LPARAM)&ContextContinue ? 7 : 0; +} + +static +void +TestEnumFontFamiliesA( + _In_ HDC hdc, + _In_ PCSTR FontName) +{ + int ret; + DWORD error; + + EnumProcCalls = 0; + SetLastError(0xdeadbeef); + ret = EnumFontFamiliesA(hdc, + FontName, + EnumProcA, + (LPARAM)&ContextContinue); + error = GetLastError(); + ok(ret == 1, "ret is %d, expected 0\n", ret); + ok(error == 0xdeadbeef, "error is %lu\n", error); + ok(EnumProcCalls == 0, "EnumProcCalls is %d\n", EnumProcCalls); +} + +static +void +TestEnumFontFamiliesW( + _In_ HDC hdc, + _In_ PCWSTR FontName) +{ + int ret; + DWORD error; + + EnumProcCalls = 0; + SetLastError(0xdeadbeef); + ret = EnumFontFamiliesW(hdc, + FontName, + EnumProcW, + (LPARAM)&ContextContinue); + error = GetLastError(); + ok(ret == 1, "ret is %d, expected 0\n", ret); + ok(error == 0xdeadbeef, "error is %lu\n", error); + ok(EnumProcCalls == 0, "EnumProcCalls is %d\n", EnumProcCalls); +} + +static +void +TestEnumFontFamiliesExA( + _In_ HDC hdc, + _In_ PCSTR FontName) +{ + int ret; + DWORD error; + LOGFONTA lf; + + EnumProcCalls = 0; + ZeroMemory(&lf, sizeof(lf)); + lf.lfCharSet = DEFAULT_CHARSET; + lf.lfPitchAndFamily = 0; + StringCbCopyA(lf.lfFaceName, sizeof(lf.lfFaceName), FontName); + SetLastError(0xdeadbeef); + ret = EnumFontFamiliesExA(hdc, + &lf, + EnumProcA, + (LPARAM)&ContextContinue, + 0); + error = GetLastError(); + ok(ret == 1, "ret is %d, expected 0\n", ret); + ok(error == 0xdeadbeef, "error is %lu\n", error); + ok(EnumProcCalls == 0, "EnumProcCalls is %d\n", EnumProcCalls); +} + +static +void +TestEnumFontFamiliesExW( + _In_ HDC hdc, + _In_ PCWSTR FontName) +{ + int ret; + DWORD error; + LOGFONTW lf; + + EnumProcCalls = 0; + ZeroMemory(&lf, sizeof(lf)); + lf.lfCharSet = DEFAULT_CHARSET; + lf.lfPitchAndFamily = 0; + StringCbCopyW(lf.lfFaceName, sizeof(lf.lfFaceName), FontName); + SetLastError(0xdeadbeef); + ret = EnumFontFamiliesExW(hdc, + &lf, + EnumProcW, + (LPARAM)&ContextContinue, + 0); + error = GetLastError(); + ok(ret == 1, "ret is %d, expected 0\n", ret); + ok(error == 0xdeadbeef, "error is %lu\n", error); + ok(EnumProcCalls == 0, "EnumProcCalls is %d\n", EnumProcCalls); +} + +START_TEST(EnumFontFamilies) +{ + HDC hdc; + + hdc = CreateCompatibleDC(NULL); + if (!hdc) + { + skip("No DC\n"); + return; + } + + TestEnumFontFamiliesA(hdc, "ThisFontDoesNotExist"); + TestEnumFontFamiliesW(hdc, L"ThisFontDoesNotExist"); + TestEnumFontFamiliesExA(hdc, "ThisFontDoesNotExist"); + TestEnumFontFamiliesExW(hdc, L"ThisFontDoesNotExist"); + + DeleteDC(hdc); +} +
Propchange: trunk/rostests/apitests/gdi32/EnumFontFamilies.c ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/rostests/apitests/gdi32/testlist.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/testlist.c?... ============================================================================== --- trunk/rostests/apitests/gdi32/testlist.c [iso-8859-1] (original) +++ trunk/rostests/apitests/gdi32/testlist.c [iso-8859-1] Mon Oct 13 12:25:30 2014 @@ -23,6 +23,7 @@ extern void func_EngCreateSemaphore(void); extern void func_EngDeleteSemaphore(void); extern void func_EngReleaseSemaphore(void); +extern void func_EnumFontFamilies(void); extern void func_ExcludeClipRect(void); extern void func_ExtCreatePen(void); extern void func_GdiConvertBitmap(void); @@ -85,6 +86,7 @@ { "EngCreateSemaphore", func_EngCreateSemaphore }, { "EngDeleteSemaphore", func_EngDeleteSemaphore }, { "EngReleaseSemaphore", func_EngReleaseSemaphore }, + { "EnumFontFamilies", func_EnumFontFamilies }, { "ExcludeClipRect", func_ExcludeClipRect }, { "ExtCreatePen", func_ExtCreatePen }, { "GdiConvertBitmap", func_GdiConvertBitmap },