reactos/rostests/apitests/gdi32api/tests/GetTextFace.c
KJK::Hyperion 8c7bebfed8 - test GetTextFaceW instead of GetTextFaceA
- test that:
    - the last error is never set
    - the buffer size is ignored if the buffer is NULL
    - the buffer size is returned if the buffer is non-NULL and too small
    - the function fails if a non-NULL buffer has a size <= 0
 - allocate the DC for a GDI test with a GDI routine (CreateCompatibleDC) instead of an USER routine (GetDC)

svn path=/trunk/; revision=36779
2008-10-17 00:28:47 +00:00

68 lines
1.6 KiB
C

INT
Test_GetTextFace(PTESTINFO pti)
{
HDC hDC;
INT ret;
INT ret2;
WCHAR Buffer[20];
hDC = CreateCompatibleDC(NULL);
ASSERT(hDC);
/* Whether asking for the string size (NULL buffer) ignores the size argument */
SetLastError(0xE000BEEF);
ret = GetTextFaceW(hDC, 0, NULL);
TEST(ret != 0);
TEST(GetLastError() == 0xE000BEEF);
ret2 = ret;
SetLastError(0xE000BEEF);
ret = GetTextFaceW(hDC, -1, NULL);
TEST(ret != 0);
TEST(ret == ret2);
TEST(GetLastError() == 0xE000BEEF);
ret2 = ret;
SetLastError(0xE000BEEF);
ret = GetTextFaceW(hDC, 10000, NULL);
TEST(ret != 0);
TEST(ret == ret2);
TEST(GetLastError() == 0xE000BEEF);
ret2 = ret;
/* Whether the buffer is correctly filled */
SetLastError(0xE000BEEF);
ret = GetTextFaceW(hDC, 20, Buffer);
TEST(ret != 0);
TEST(ret <= 20);
TEST(Buffer[ret - 1] == 0);
TEST(GetLastError() == 0xE000BEEF);
SetLastError(0xE000BEEF);
ret = GetTextFaceW(hDC, 1, Buffer);
TEST(ret == 1);
TEST(Buffer[ret - 1] == 0);
TEST(GetLastError() == 0xE000BEEF);
SetLastError(0xE000BEEF);
ret = GetTextFaceW(hDC, 2, Buffer);
TEST(ret == 2);
TEST(Buffer[ret - 1] == 0);
TEST(GetLastError() == 0xE000BEEF);
/* Whether invalid buffer sizes are correctly ignored */
SetLastError(0xE000BEEF);
ret = GetTextFaceW(hDC, 0, Buffer);
TEST(ret == 0);
TEST(GetLastError() == 0xE000BEEF);
SetLastError(0xE000BEEF);
ret = GetTextFaceW(hDC, -1, Buffer);
TEST(ret == 0);
TEST(GetLastError() == 0xE000BEEF);
DeleteDC(hDC);
return APISTATUS_NORMAL;
}