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>
8 #define KMT_EMULATE_KERNEL
11 START_TEST(RtlIsValidOemCharacter
)
13 const WCHAR ValidCharsEn
[] = L
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!#$%^&*()_+|`:;\"'-/\\ ";
14 const WCHAR InvalidChars
[] = L
"?\x0372\x03CF\x3D5F";
15 WCHAR unicode_null
= UNICODE_NULL
;
19 NTSTATUS Status
= STATUS_SUCCESS
;
21 res
= RtlIsValidOemCharacter(&unicode_null
);
22 ok(res
!= FALSE
, "UNICODE_NULL is valid char\n");
24 /* Test for valid chars */
25 for (i
= 0; i
< (sizeof(ValidCharsEn
) / sizeof(WCHAR
)) - 1; i
++)
27 tmp
= ValidCharsEn
[i
];
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
);
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
);
39 /* Test for invalid chars */
40 for (i
= 0; i
< (sizeof(InvalidChars
) / sizeof(WCHAR
)) - 1; i
++)
42 tmp
= InvalidChars
[i
];
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
);
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
);
56 RtlIsValidOemCharacter(NULL
);
58 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
)
60 /* Get the exception code */
61 Status
= _SEH2_GetExceptionCode();
65 ok(!NT_SUCCESS(Status
), "Exception is expected but it did not occur\n");