2 * PROJECT: ReactOS api tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Tests for (Rtl)IsTextUnicode.
5 * PROGRAMMER: Hermes Belusca-Maito
10 #define WIN32_NO_STATUS
13 START_TEST(IsTextUnicode
)
15 #define INVALID_FLAG 0xFFFFFFFF
17 #define NEW_TEST(Buffer, Flags, ResultFlags, Success) \
18 { (PVOID)(Buffer), sizeof((Buffer)), (Flags), (ResultFlags), (Success) }
35 NEW_TEST("ANSI string", IS_TEXT_UNICODE_ASCII16
, 0, FALSE
),
36 NEW_TEST("ANSI string", IS_TEXT_UNICODE_STATISTICS
, 0, FALSE
),
37 NEW_TEST("ANSI string", INVALID_FLAG
, 0, FALSE
),
42 NEW_TEST(L
"a", IS_TEXT_UNICODE_ASCII16
, IS_TEXT_UNICODE_ASCII16
, TRUE
),
43 NEW_TEST(L
"a", IS_TEXT_UNICODE_UNICODE_MASK
, IS_TEXT_UNICODE_STATISTICS
| IS_TEXT_UNICODE_ASCII16
, TRUE
),
44 NEW_TEST(L
"a", IS_TEXT_UNICODE_STATISTICS
, IS_TEXT_UNICODE_STATISTICS
, TRUE
),
45 NEW_TEST(L
"a", INVALID_FLAG
, 0, TRUE
),
48 NEW_TEST(L
"UNICODE String 0", IS_TEXT_UNICODE_ASCII16
, 0, FALSE
),
49 NEW_TEST(L
"UNICODE String 0", IS_TEXT_UNICODE_UNICODE_MASK
, IS_TEXT_UNICODE_CONTROLS
| IS_TEXT_UNICODE_STATISTICS
, TRUE
),
50 NEW_TEST(L
"UNICODE String 0", IS_TEXT_UNICODE_STATISTICS
, IS_TEXT_UNICODE_STATISTICS
, TRUE
),
51 NEW_TEST(L
"UNICODE String 0", INVALID_FLAG
, 0, TRUE
),
54 NEW_TEST(L
"\xFEFF" L
"UNICODE String 1", IS_TEXT_UNICODE_ASCII16
, 0, FALSE
),
55 NEW_TEST(L
"\xFEFF" L
"UNICODE String 1", IS_TEXT_UNICODE_UNICODE_MASK
, IS_TEXT_UNICODE_SIGNATURE
| IS_TEXT_UNICODE_CONTROLS
, TRUE
),
56 NEW_TEST(L
"\xFEFF" L
"UNICODE String 1", IS_TEXT_UNICODE_STATISTICS
, 0, FALSE
),
57 NEW_TEST(L
"\xFEFF" L
"UNICODE String 1", INVALID_FLAG
, 0, TRUE
),
60 NEW_TEST(L
"\xFFFE" L
"UNICODE String 2", IS_TEXT_UNICODE_ASCII16
, 0, FALSE
),
61 NEW_TEST(L
"\xFFFE" L
"UNICODE String 2", IS_TEXT_UNICODE_UNICODE_MASK
, IS_TEXT_UNICODE_CONTROLS
, TRUE
),
62 NEW_TEST(L
"\xFFFE" L
"UNICODE String 2", IS_TEXT_UNICODE_STATISTICS
, 0, FALSE
),
63 NEW_TEST(L
"\xFFFE" L
"UNICODE String 2", INVALID_FLAG
, 0, FALSE
),
66 NEW_TEST(L
"UNICODE String 3 Привет!", IS_TEXT_UNICODE_ASCII16
, 0, FALSE
),
67 NEW_TEST(L
"UNICODE String 3 Привет!", IS_TEXT_UNICODE_UNICODE_MASK
, IS_TEXT_UNICODE_CONTROLS
| IS_TEXT_UNICODE_STATISTICS
, TRUE
),
68 NEW_TEST(L
"UNICODE String 3 Привет!", IS_TEXT_UNICODE_STATISTICS
, IS_TEXT_UNICODE_STATISTICS
, TRUE
),
69 NEW_TEST(L
"UNICODE String 3 Привет!", INVALID_FLAG
, 0, TRUE
),
72 NEW_TEST(L
"\xFEFF" L
"UNICODE String 4 Привет!", IS_TEXT_UNICODE_ASCII16
, 0, FALSE
),
73 NEW_TEST(L
"\xFEFF" L
"UNICODE String 4 Привет!", IS_TEXT_UNICODE_UNICODE_MASK
, IS_TEXT_UNICODE_SIGNATURE
| IS_TEXT_UNICODE_CONTROLS
, TRUE
),
74 NEW_TEST(L
"\xFEFF" L
"UNICODE String 4 Привет!", IS_TEXT_UNICODE_STATISTICS
, 0, FALSE
),
75 NEW_TEST(L
"\xFEFF" L
"UNICODE String 4 Привет!", INVALID_FLAG
, 0, TRUE
),
78 NEW_TEST(L
"\xFFFE" L
"UNICODE String 5 Привет!", IS_TEXT_UNICODE_ASCII16
, 0, FALSE
),
79 NEW_TEST(L
"\xFFFE" L
"UNICODE String 5 Привет!", IS_TEXT_UNICODE_UNICODE_MASK
, IS_TEXT_UNICODE_CONTROLS
, TRUE
),
80 NEW_TEST(L
"\xFFFE" L
"UNICODE String 5 Привет!", IS_TEXT_UNICODE_STATISTICS
, 0, FALSE
),
81 NEW_TEST(L
"\xFFFE" L
"UNICODE String 5 Привет!", INVALID_FLAG
, 0, FALSE
),
85 NEW_TEST(L
"UNICODE S" L
"\xFFFE" L
"tring 5 Привет!", IS_TEXT_UNICODE_ILLEGAL_CHARS
, IS_TEXT_UNICODE_ILLEGAL_CHARS
, FALSE
),
87 NEW_TEST(L
"UNICODE S" L
"\x0000" L
"tring 5 Привет!", IS_TEXT_UNICODE_ILLEGAL_CHARS
, IS_TEXT_UNICODE_ILLEGAL_CHARS
, FALSE
),
88 /* ASCII CRLF (packed into one word) */
89 NEW_TEST(L
"UNICODE S" L
"\x0A0D" L
"tring 5 Привет!", IS_TEXT_UNICODE_ILLEGAL_CHARS
, IS_TEXT_UNICODE_ILLEGAL_CHARS
, FALSE
),
91 NEW_TEST(L
"UNICODE S" L
"\xFFFF" L
"tring 5 Привет!", IS_TEXT_UNICODE_ILLEGAL_CHARS
, IS_TEXT_UNICODE_ILLEGAL_CHARS
, FALSE
),
98 for (i
= 0; i
< ARRAYSIZE(Tests
); ++i
)
100 Result
= Tests
[i
].Flags
;
101 Success
= IsTextUnicode(Tests
[i
].Buffer
, Tests
[i
].Size
, ((Result
!= INVALID_FLAG
) ? &Result
: NULL
));
102 ok(Success
== Tests
[i
].Success
, "IsTextUnicode(%u) returned 0x%x, expected %s\n", i
, Success
, (Tests
[i
].Success
? "TRUE" : "FALSE"));
103 if (Result
!= INVALID_FLAG
)
104 ok(Result
== Tests
[i
].ResultFlags
, "IsTextUnicode(%u) Result returned 0x%x, expected 0x%x\n", i
, Result
, Tests
[i
].ResultFlags
);