1 /* 2 * PROJECT: ReactOS kernel-mode tests 3 * LICENSE: GPLv2+ - See COPYING in the top level directory 4 * PURPOSE: Kernel-Mode Test Suite Runtime library for RtlIsValidOemCharacter 5 * PROGRAMMER: Dmitry Chapyshev <dmitry@reactos.org> 6 */ 7 8 #define KMT_EMULATE_KERNEL 9 #include <kmt_test.h> 10 11 START_TEST(RtlIsValidOemCharacter) 12 { 13 const WCHAR ValidCharsEn[] = L"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!#$%^&*()_+|`:;\"'-/\\ "; 14 const WCHAR InvalidChars[] = L"?\x0372\x03CF\x3D5F"; 15 WCHAR unicode_null = UNICODE_NULL; 16 WCHAR tmp; 17 BOOLEAN res; 18 INT i; 19 NTSTATUS Status = STATUS_SUCCESS; 20 21 res = RtlIsValidOemCharacter(&unicode_null); 22 ok(res != FALSE, "UNICODE_NULL is valid char\n"); 23 24 /* Test for valid chars */ 25 for (i = 0; i < (sizeof(ValidCharsEn) / sizeof(WCHAR)) - 1; i++) 26 { 27 tmp = ValidCharsEn[i]; 28 29 res = RtlIsValidOemCharacter(&tmp); 30 ok(res != FALSE, "Expected success. '%C' [%d] is valid char\n", ValidCharsEn[i], i); 31 ok(tmp == RtlUpcaseUnicodeChar(ValidCharsEn[i]), "Expected upcase char for '%C' [%d]\n", ValidCharsEn[i], i); 32 33 tmp = RtlUpcaseUnicodeChar(ValidCharsEn[i]); 34 res = RtlIsValidOemCharacter(&tmp); 35 ok(res != FALSE, "Expected success. '%C' [%d] is valid char\n", ValidCharsEn[i], i); 36 ok(tmp == RtlUpcaseUnicodeChar(ValidCharsEn[i]), "Expected upcase char for '%C' [%d]\n", ValidCharsEn[i], i); 37 } 38 39 /* Test for invalid chars */ 40 for (i = 0; i < (sizeof(InvalidChars) / sizeof(WCHAR)) - 1; i++) 41 { 42 tmp = InvalidChars[i]; 43 44 res = RtlIsValidOemCharacter(&tmp); 45 ok(res == FALSE, "Expected fail. '%C' [%d] is NOT valid char\n", InvalidChars[i], i); 46 ok(tmp == RtlUpcaseUnicodeChar(InvalidChars[i]), "Expected upcase char for '%C' [%d]\n", InvalidChars[i], i); 47 48 tmp = RtlUpcaseUnicodeChar(InvalidChars[i]); 49 res = RtlIsValidOemCharacter(&tmp); 50 ok(res == FALSE, "Expected fail. '%C' [%d] is NOT valid char\n", InvalidChars[i], i); 51 ok(tmp == RtlUpcaseUnicodeChar(InvalidChars[i]), "Expected upcase char for '%C' [%d]\n", InvalidChars[i], i); 52 } 53 54 _SEH2_TRY 55 { 56 RtlIsValidOemCharacter(NULL); 57 } 58 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) 59 { 60 /* Get the exception code */ 61 Status = _SEH2_GetExceptionCode(); 62 } 63 _SEH2_END; 64 65 ok(!NT_SUCCESS(Status), "Exception is expected but it did not occur\n"); 66 } 67 68