From 13b28424d83b808642b15baeea278a2340168471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 7 Aug 2016 16:35:56 +0000 Subject: [PATCH] [APITESTS]: Add a test for advapi32!IsTextUnicode. CORE-11803 svn path=/trunk/; revision=72148 --- rostests/apitests/advapi32/CMakeLists.txt | 1 + rostests/apitests/advapi32/IsTextUnicode.c | 96 ++++++++++++++++++++++ rostests/apitests/advapi32/testlist.c | 2 + 3 files changed, 99 insertions(+) create mode 100644 rostests/apitests/advapi32/IsTextUnicode.c diff --git a/rostests/apitests/advapi32/CMakeLists.txt b/rostests/apitests/advapi32/CMakeLists.txt index dcc8a352c70..d99be934a46 100644 --- a/rostests/apitests/advapi32/CMakeLists.txt +++ b/rostests/apitests/advapi32/CMakeLists.txt @@ -3,6 +3,7 @@ list(APPEND SOURCE CreateService.c DuplicateTokenEx.c HKEY_CLASSES_ROOT.c + IsTextUnicode.c LockDatabase.c QueryServiceConfig2.c RegEnumValueW.c diff --git a/rostests/apitests/advapi32/IsTextUnicode.c b/rostests/apitests/advapi32/IsTextUnicode.c new file mode 100644 index 00000000000..c7bda750493 --- /dev/null +++ b/rostests/apitests/advapi32/IsTextUnicode.c @@ -0,0 +1,96 @@ +/* + * PROJECT: ReactOS api tests + * LICENSE: GPLv2+ - See COPYING in the top level directory + * PURPOSE: Tests for (Rtl)IsTextUnicode. + * PROGRAMMER: Hermes Belusca-Maito + */ + +#include + +#define WIN32_NO_STATUS +#include + +START_TEST(IsTextUnicode) +{ +#define INVALID_FLAG 0xFFFFFFFF + +#define NEW_TEST(Buffer, Flags, ResultFlags, Success) \ + { (PVOID)(Buffer), sizeof((Buffer)), (Flags), (ResultFlags), (Success) } + + static struct + { + /* Input */ + PVOID Buffer; + INT Size; + INT Flags; + + /* Output */ + INT ResultFlags; + BOOL Success; + } Tests[] = + { + /* ANSI string */ + + // 0 + NEW_TEST("ANSI string", IS_TEXT_UNICODE_ASCII16, 0, FALSE), + NEW_TEST("ANSI string", IS_TEXT_UNICODE_STATISTICS, 0, FALSE), + NEW_TEST("ANSI string", INVALID_FLAG, 0, FALSE), + + /* UNICODE strings */ + + // 3 + NEW_TEST(L"a", IS_TEXT_UNICODE_ASCII16, IS_TEXT_UNICODE_ASCII16, TRUE), + NEW_TEST(L"a", IS_TEXT_UNICODE_UNICODE_MASK, IS_TEXT_UNICODE_STATISTICS | IS_TEXT_UNICODE_ASCII16, TRUE), + NEW_TEST(L"a", IS_TEXT_UNICODE_STATISTICS, IS_TEXT_UNICODE_STATISTICS, TRUE), + NEW_TEST(L"a", INVALID_FLAG, 0, TRUE), + + // 7 + NEW_TEST(L"UNICODE String 0", IS_TEXT_UNICODE_ASCII16, 0, FALSE), + NEW_TEST(L"UNICODE String 0", IS_TEXT_UNICODE_UNICODE_MASK, IS_TEXT_UNICODE_CONTROLS | IS_TEXT_UNICODE_STATISTICS, TRUE), + NEW_TEST(L"UNICODE String 0", IS_TEXT_UNICODE_STATISTICS, IS_TEXT_UNICODE_STATISTICS, TRUE), + NEW_TEST(L"UNICODE String 0", INVALID_FLAG, 0, TRUE), + + // 11 + NEW_TEST(L"\xFEFF" L"UNICODE String 1", IS_TEXT_UNICODE_ASCII16, 0, FALSE), + NEW_TEST(L"\xFEFF" L"UNICODE String 1", IS_TEXT_UNICODE_UNICODE_MASK, IS_TEXT_UNICODE_SIGNATURE | IS_TEXT_UNICODE_CONTROLS, TRUE), + NEW_TEST(L"\xFEFF" L"UNICODE String 1", IS_TEXT_UNICODE_STATISTICS, 0, FALSE), + NEW_TEST(L"\xFEFF" L"UNICODE String 1", INVALID_FLAG, 0, TRUE), + + // 15 + NEW_TEST(L"\xFFFE" L"UNICODE String 2", IS_TEXT_UNICODE_ASCII16, 0, FALSE), + NEW_TEST(L"\xFFFE" L"UNICODE String 2", IS_TEXT_UNICODE_UNICODE_MASK, IS_TEXT_UNICODE_CONTROLS, TRUE), + NEW_TEST(L"\xFFFE" L"UNICODE String 2", IS_TEXT_UNICODE_STATISTICS, 0, FALSE), + NEW_TEST(L"\xFFFE" L"UNICODE String 2", INVALID_FLAG, 0, FALSE), + + // 19 + NEW_TEST(L"UNICODE String 3 Привет!", IS_TEXT_UNICODE_ASCII16, 0, FALSE), + NEW_TEST(L"UNICODE String 3 Привет!", IS_TEXT_UNICODE_UNICODE_MASK, IS_TEXT_UNICODE_CONTROLS | IS_TEXT_UNICODE_STATISTICS, TRUE), + NEW_TEST(L"UNICODE String 3 Привет!", IS_TEXT_UNICODE_STATISTICS, IS_TEXT_UNICODE_STATISTICS, TRUE), + NEW_TEST(L"UNICODE String 3 Привет!", INVALID_FLAG, 0, TRUE), + + // 23 + NEW_TEST(L"\xFEFF" L"UNICODE String 4 Привет!", IS_TEXT_UNICODE_ASCII16, 0, FALSE), + NEW_TEST(L"\xFEFF" L"UNICODE String 4 Привет!", IS_TEXT_UNICODE_UNICODE_MASK, IS_TEXT_UNICODE_SIGNATURE | IS_TEXT_UNICODE_CONTROLS, TRUE), + NEW_TEST(L"\xFEFF" L"UNICODE String 4 Привет!", IS_TEXT_UNICODE_STATISTICS, 0, FALSE), + NEW_TEST(L"\xFEFF" L"UNICODE String 4 Привет!", INVALID_FLAG, 0, TRUE), + + // 27 + NEW_TEST(L"\xFFFE" L"UNICODE String 5 Привет!", IS_TEXT_UNICODE_ASCII16, 0, FALSE), + NEW_TEST(L"\xFFFE" L"UNICODE String 5 Привет!", IS_TEXT_UNICODE_UNICODE_MASK, IS_TEXT_UNICODE_CONTROLS, TRUE), + NEW_TEST(L"\xFFFE" L"UNICODE String 5 Привет!", IS_TEXT_UNICODE_STATISTICS, 0, FALSE), + NEW_TEST(L"\xFFFE" L"UNICODE String 5 Привет!", INVALID_FLAG, 0, FALSE), + }; + + UINT i; + BOOL Success; + INT Result; + + for (i = 0; i < ARRAYSIZE(Tests); ++i) + { + Result = Tests[i].Flags; + Success = IsTextUnicode(Tests[i].Buffer, Tests[i].Size, ((Result != INVALID_FLAG) ? &Result : NULL)); + ok(Success == Tests[i].Success, "IsTextUnicode(%u) returned 0x%x, expected %s\n", i, Success, (Tests[i].Success ? "TRUE" : "FALSE")); + if (Result != INVALID_FLAG) + ok(Result == Tests[i].ResultFlags, "IsTextUnicode(%u) Result returned 0x%x, expected 0x%x\n", i, Result, Tests[i].ResultFlags); + } +} diff --git a/rostests/apitests/advapi32/testlist.c b/rostests/apitests/advapi32/testlist.c index 93c626e2cd4..c93ef9bbbca 100644 --- a/rostests/apitests/advapi32/testlist.c +++ b/rostests/apitests/advapi32/testlist.c @@ -6,6 +6,7 @@ extern void func_CreateService(void); extern void func_DuplicateTokenEx(void); extern void func_HKEY_CLASSES_ROOT(void); +extern void func_IsTextUnicode(void); extern void func_LockDatabase(void); extern void func_QueryServiceConfig2(void); extern void func_RegEnumValueW(void); @@ -18,6 +19,7 @@ const struct test winetest_testlist[] = { "CreateService", func_CreateService }, { "DuplicateTokenEx", func_DuplicateTokenEx }, { "HKEY_CLASSES_ROOT", func_HKEY_CLASSES_ROOT }, + { "IsTextUnicode" , func_IsTextUnicode }, { "LockDatabase" , func_LockDatabase }, { "QueryServiceConfig2", func_QueryServiceConfig2 }, { "RegEnumValueW", func_RegEnumValueW },