Index: rostests/apitests/kernel32/CMakeLists.txt =================================================================== --- rostests/apitests/kernel32/CMakeLists.txt (revision 74717) +++ rostests/apitests/kernel32/CMakeLists.txt (working copy) @@ -14,6 +14,7 @@ GetDriveType.c GetModuleFileName.c interlck.c + IsDBCSLeadByteEx.c LoadLibraryExW.c lstrcpynW.c lstrlen.c Index: rostests/apitests/kernel32/IsDBCSLeadByteEx.c =================================================================== --- rostests/apitests/kernel32/IsDBCSLeadByteEx.c (nonexistent) +++ rostests/apitests/kernel32/IsDBCSLeadByteEx.c (working copy) @@ -0,0 +1,74 @@ +/* + * PROJECT: ReactOS api tests + * LICENSE: GPLv2+ - See COPYING in the top level directory + * PURPOSE: Tests for IsDBCSLeadByteEx + * PROGRAMMER: Katayama Hirofumi MZ + */ + +#include + +#define WIN32_NO_STATUS +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H +#include +#include + +START_TEST(IsDBCSLeadByteEx) +{ + static const char *names[] = { + "ChineseSimpilifed", + "ChineseTraditional", + "Japanese", + "Korean" + }; + static const WORD codepages[] = { 936, 950, 932, 949 }; + + int i, k, k0, count, array[8], flag; + + for (i = 0; i < _countof(codepages); ++i) + { + count = 0; + ZeroMemory(&array, sizeof(array)); + + k0 = 0; + flag = 0; + for (k = 0; k <= 256; ++k) + { + if (flag) + { + if (!IsDBCSLeadByteEx(codepages[i], k)) + { + array[count++] = k0; + array[count++] = k - 1; + flag = 0; + } + } + else + { + if (IsDBCSLeadByteEx(codepages[i], k)) + { + k0 = k; + flag = 1; + } + } + } + + switch (i) + { + case 0: + case 1: + case 3: + ok(count == 2, "%s: count expected 2, was %d\n", names[i], count); + ok(array[0] == 0x81, "%s: array[0] was %d\n", names[i], array[0]); + ok(array[1] == 0xFE, "%s: array[1] was %d\n", names[i], array[1]); + break; + case 2: + ok(count == 4, "%s: count expected 4, was %d\n", names[i], count); + ok(array[0] == 0x81, "%s: array[0] was %d\n", names[i], array[0]); + ok(array[1] == 0x9F, "%s: array[1] was %d\n", names[i], array[1]); + ok(array[2] == 0xE0, "%s: array[2] was %d\n", names[i], array[2]); + ok(array[3] == 0xFC, "%s: array[3] was %d\n", names[i], array[3]); + break; + } + } +} Index: rostests/apitests/kernel32/testlist.c =================================================================== --- rostests/apitests/kernel32/testlist.c (revision 74717) +++ rostests/apitests/kernel32/testlist.c (working copy) @@ -15,6 +15,7 @@ extern void func_GetDriveType(void); extern void func_GetModuleFileName(void); extern void func_interlck(void); +extern void func_IsDBCSLeadByteEx(void); extern void func_LoadLibraryExW(void); extern void func_lstrcpynW(void); extern void func_lstrlen(void); @@ -42,6 +43,7 @@ { "GetDriveType", func_GetDriveType }, { "GetModuleFileName", func_GetModuleFileName }, { "interlck", func_interlck }, + { "IsDBCSLeadByteEx", func_IsDBCSLeadByteEx }, { "LoadLibraryExW", func_LoadLibraryExW }, { "lstrcpynW", func_lstrcpynW }, { "lstrlen", func_lstrlen },