in src/agent/UnicodeEncodingTest.cc [32:81]
static void correctnessByCode()
{
char mbstr1[4];
char mbstr2[4];
wchar_t wch[2];
for (unsigned int code = 0; code < 0x110000; ++code) {
// Surrogate pair reserved region.
const bool isReserved = (code >= 0xD800 && code <= 0xDFFF);
int mblen1 = encodeUtf8(mbstr1, code);
if (isReserved ? mblen1 != 0 : mblen1 <= 0) {
printf("Error: 0x%04X: mblen1=%d\n", code, mblen1);
continue;
}
int wlen = encodeUtf16(wch, code);
if (isReserved ? wlen != 0 : wlen <= 0) {
printf("Error: 0x%04X: wlen=%d\n", code, wlen);
continue;
}
if (isReserved) {
continue;
}
if (mblen1 != utf8CharLength(mbstr1[0])) {
printf("Error: 0x%04X: mblen1=%d, utf8CharLength(mbstr1[0])=%d\n",
code, mblen1, utf8CharLength(mbstr1[0]));
continue;
}
if (code != decodeUtf8(mbstr1)) {
printf("Error: 0x%04X: decodeUtf8(mbstr1)=%u\n",
code, decodeUtf8(mbstr1));
continue;
}
int mblen2 = WideCharToMultiByte(CP_UTF8, 0, wch, wlen, mbstr2, 4, NULL, NULL);
if (mblen1 != mblen2) {
printf("Error: 0x%04X: mblen1=%d, mblen2=%d\n", code, mblen1, mblen2);
continue;
}
if (memcmp(mbstr1, mbstr2, mblen1) != 0) {
printf("Error: 0x%04x: encodings are different\n", code);
continue;
}
}
}