/*++ Copyright (c) 1989 Microsoft Corporation Module Name: tnlsxlat.c Abstract: Test program for the Nlsxlat Procedures Author: Ian James [IanJa] 03-Feb-1994 Revision History: --*/ #include #include "nt.h" #include "ntrtl.h" #define NELEM(p) (sizeof(p) / sizeof(*(p))) char OEMBuff[1000]; char ABuff[1000]; WCHAR UBuff[2000]; int main( int argc, char *argv[] ) { ULONG j; ULONG cb; char *pch; printf("Start NlsXlatTest()\n"); // // First initialize the buffers // for (j = 0; j < sizeof(OEMBuff); j++) { OEMBuff[j] = (char)(j * 17); ABuff[j] = (char)(j * 19); } // // TEST 1 // RtlMultiByteToUnicodeN, RtlUnicodeToMultiByteN // printf("Test 1: MultiByteToUnicodeN & RtlUnicodeToMultiByteN\n"); // TEST 1.1 // printf(" Test 1.1: A->U U->A\n"); RtlMultiByteToUnicodeN(UBuff, sizeof(UBuff), &cb, ABuff, sizeof(ABuff)); printf(" %d bytes converted to Unicode\n", cb); RtlUnicodeToMultiByteN(ABuff, sizeof(ABuff), &cb, UBuff, sizeof(UBuff)); printf(" %d bytes converted back to ANSI\n", cb); for (j = 0; j < sizeof(ABuff); j++) { if (ABuff[j] != (char)(j * 19)) { printf("ABuff[%d] was 0x%02x, now 0x%02x\n", j, (char)(j * 19), ABuff[j]); return FALSE; } } printf(" Test 1.1 OK\n"); // TEST 1.2 // printf(" Test 1.2: A->U U->A (source & dest buffers the same)\n"); RtlCopyMemory(UBuff, ABuff, sizeof(ABuff)); RtlMultiByteToUnicodeN(UBuff, sizeof(UBuff), &cb, UBuff, sizeof(ABuff)); printf(" %d bytes converted to Unicode\n", cb); RtlUnicodeToMultiByteN(UBuff, sizeof(ABuff), &cb, UBuff, sizeof(UBuff)); printf(" %d bytes converted back to ANSI\n", cb); pch = (LPSTR)UBuff; for (j = 0; j < sizeof(ABuff); j++) { if (pch[j] != ABuff[j]) { printf(" ABuff[%d] was 0x%02x, was turned into 0x%02x\n", j, ABuff[j], pch[j]); printf(" Test 1.2 FAILED!\n"); return FALSE; } } printf(" Test 1.2 OK!\n"); return TRUE; }