Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120/* * PROJECT: ReactOS api tests * LICENSE: GPLv2+ - See COPYING in the top level directory * PURPOSE: Tests for IsDBCSLeadByteEx * PROGRAMMER: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com> */
#include "precomp.h"
#define MAX_RANGE 4
typedef struct RANGE{ int StartIndex; int EndIndex;} RANGE;
typedef struct ENTRY{ const char *Name; int CodePage; int RangeCount; RANGE Ranges[MAX_RANGE];} ENTRY;
START_TEST(IsDBCSLeadByteEx){ static const ENTRY Entries[] = { { "English", 437, 0 }, { "ChineseSimpilified", 936, 1, { { 0x81, 0xFE } } }, { "ChineseTraditional", 950, 1, { { 0x81, 0xFE } } }, { "Japanese", 932, 2, { { 0x81, 0x9F }, { 0xE0, 0xFC } } }, { "Korean", 949, 1, { { 0x81, 0xFE } } } }; int i;
for (i = 0; i < _countof(Entries); ++i) { int Index, iRange; int CodePage = Entries[i].CodePage, StartIndex = 0, RangeCount = 0; BOOL InRange = FALSE; RANGE Ranges[MAX_RANGE]; const char *Name = Entries[i].Name;
ZeroMemory(&Ranges, sizeof(Ranges));
for (Index = 0; Index < 256; ++Index) { if (InRange) { if (!IsDBCSLeadByteEx(CodePage, Index)) { Ranges[RangeCount].StartIndex = StartIndex; Ranges[RangeCount].EndIndex = Index - 1; ++RangeCount; InRange = FALSE; } } else { if (IsDBCSLeadByteEx(CodePage, Index)) { StartIndex = Index; InRange = TRUE; } } } if (InRange) { Ranges[RangeCount].StartIndex = StartIndex; Ranges[RangeCount].EndIndex = Index - 1; ++RangeCount; }
ok(RangeCount == Entries[i].RangeCount, "%s: RangeCount expected %d, was %d\n", Name, Entries[i].RangeCount, RangeCount); for (iRange = 0; iRange < Entries[i].RangeCount; ++iRange) { const RANGE *pRange = &Entries[i].Ranges[iRange]; int iStart = Ranges[iRange].StartIndex; int iEnd = Ranges[iRange].EndIndex; ok(iStart == pRange->StartIndex, "%s: Ranges[%d].StartIndex expected: 0x%02X, was: 0x%02X\n", Name, iRange, pRange->StartIndex, iStart); ok(iEnd == pRange->EndIndex, "%s: Ranges[%d].EndIndex was expected: 0x%02X, was: 0x%02X\n", Name, iRange, pRange->EndIndex, iEnd); } }}