2 * PROJECT: ReactOS api tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Test for RtlGenerate8dot3Name
5 * PROGRAMMER: Pierre Schweitzer <pierre@reactos.org>
10 #define WIN32_NO_STATUS
11 #include <ndk/rtlfuncs.h>
17 _In_ PCUNICODE_STRING Name
,
18 _In_ BOOLEAN AllowExtendedCharacters
,
19 _Inout_ PGENERATE_NAME_CONTEXT Context
,
20 _Inout_ PUNICODE_STRING Name8dot3
);
22 PWSTR Names
[] = { L
"Menu Démarrer", L
"Sélecteur de configuration clavier.lnk", L
"éèàùç.txt", L
"çùàèé.txt", L
"éèàù.txt", L
"çùàè.txt", L
"éèàùçeeauc.txt", L
"éeèéçcùu.txt", L
"test.éxè", L
"t£$t¤.txt", L
"Long file name.txt", L
"Long file name", L
"Longfilename.txt", L
"Longfilename" };
23 PWSTR ShortNames1
[] = { L
"MENUDM~1", L
"SLECTE~1.LNK", L
"5C2D~1.TXT", L
"423C~1.TXT", L
"925E~1.TXT", L
"7E4C~1.TXT", L
"EEAUC~1.TXT", L
"ECU~1.TXT", L
"TEST~1.X", L
"T$T~1.TXT", L
"LONGFI~1.TXT", L
"LONGFI~1", L
"LONGFI~1.TXT", L
"LONGFI~1" };
24 PWSTR ShortNames2
[] = { L
"MENUDM~2", L
"SLECTE~2.LNK", L
"5C2D~2.TXT", L
"423C~2.TXT", L
"925E~2.TXT", L
"7E4C~2.TXT", L
"EEAUC~2.TXT", L
"ECU~2.TXT", L
"TEST~2.X", L
"T$T~2.TXT", L
"LONGFI~2.TXT", L
"LONGFI~2", L
"LONGFI~2.TXT", L
"LONGFI~2" };
25 PWSTR ExShortNames1
[] = { L
"MENUDÉ~1", L
"SÉLECT~1.LNK", L
"ÉÈÀÙÇ~1.TXT", L
"ÇÙÀÈÉ~1.TXT", L
"ÉÈÀÙ~1.TXT", L
"ÇÙÀÈ~1.TXT", L
"ÉÈÀÙÇE~1.TXT", L
"ÉEÈÉÇC~1.TXT", L
"TEST~1.ÉXÈ", L
"T£$T¤~1.TXT", L
"LONGFI~1.TXT", L
"LONGFI~1", L
"LONGFI~1.TXT", L
"LONGFI~1" };
26 PWSTR ExShortNames2
[] = { L
"MENUDÉ~2", L
"SÉLECT~2.LNK", L
"ÉÈÀÙÇ~2.TXT", L
"ÇÙÀÈÉ~2.TXT", L
"ÉÈÀÙ~2.TXT", L
"ÇÙÀÈ~2.TXT", L
"ÉÈÀÙÇE~2.TXT", L
"ÉEÈÉÇC~2.TXT", L
"TEST~2.ÉXÈ", L
"T£$T¤~2.TXT", L
"LONGFI~2.TXT", L
"LONGFI~2", L
"LONGFI~2.TXT", L
"LONGFI~2" };
28 START_TEST(RtlGenerate8dot3Name
)
32 for (i
= 0; i
< 14; ++i
)
35 GENERATE_NAME_CONTEXT Context
;
36 UNICODE_STRING LongName
, ShortName
, Expected
;
38 RtlZeroMemory(&Context
, sizeof(GENERATE_NAME_CONTEXT
));
39 RtlInitUnicodeString(&LongName
, Names
[i
]);
40 ShortName
.Buffer
= Buffer
;
42 ShortName
.MaximumLength
= sizeof(Buffer
);
44 RtlGenerate8dot3Name(&LongName
, FALSE
, &Context
, &ShortName
);
45 RtlInitUnicodeString(&Expected
, ShortNames1
[i
]);
46 ok(RtlEqualUnicodeString(&Expected
, &ShortName
, FALSE
), "Generated: %.*S. Expected: %.*S\n", ShortName
.Length
, ShortName
.Buffer
, Expected
.Length
, Expected
.Buffer
);
49 RtlGenerate8dot3Name(&LongName
, FALSE
, &Context
, &ShortName
);
50 RtlInitUnicodeString(&Expected
, ShortNames2
[i
]);
51 ok(RtlEqualUnicodeString(&Expected
, &ShortName
, FALSE
), "Generated: %.*S. Expected: %.*S\n", ShortName
.Length
, ShortName
.Buffer
, Expected
.Length
, Expected
.Buffer
);
53 RtlZeroMemory(&Context
, sizeof(GENERATE_NAME_CONTEXT
));
55 RtlGenerate8dot3Name(&LongName
, TRUE
, &Context
, &ShortName
);
56 RtlInitUnicodeString(&Expected
, ExShortNames1
[i
]);
57 ok(RtlEqualUnicodeString(&Expected
, &ShortName
, FALSE
), "Generated: %.*S. Expected: %.*S\n", ShortName
.Length
, ShortName
.Buffer
, Expected
.Length
, Expected
.Buffer
);
60 RtlGenerate8dot3Name(&LongName
, TRUE
, &Context
, &ShortName
);
61 RtlInitUnicodeString(&Expected
, ExShortNames2
[i
]);
62 ok(RtlEqualUnicodeString(&Expected
, &ShortName
, FALSE
), "Generated: %.*S. Expected: %.*S\n", ShortName
.Length
, ShortName
.Buffer
, Expected
.Length
, Expected
.Buffer
);