22a9a03858be811a1aed930adb2f87e53ec84ee3
[reactos.git] / rostests / apitests / ntdll / RtlGenerate8dot3Name.c
1 /*
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>
6 */
7
8 #include <apitest.h>
9
10 #define WIN32_NO_STATUS
11 #include <ndk/rtlfuncs.h>
12
13 NTSYSAPI
14 VOID
15 NTAPI
16 RtlGenerate8dot3Name(
17 _In_ PCUNICODE_STRING Name,
18 _In_ BOOLEAN AllowExtendedCharacters,
19 _Inout_ PGENERATE_NAME_CONTEXT Context,
20 _Inout_ PUNICODE_STRING Name8dot3);
21
22 PWSTR Names[] = { L"Menu Démarrer", L"Sélecteur de configuration clavier.lnk", L"éèàùç.txt", L"éèàùçeeauc.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"EEAUC~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"EEAUC~2.TXT", L"LONGFI~2.TXT", L"LONGFI~2", L"LONGFI~2.TXT", L"LONGFI~2" };
25
26 START_TEST(RtlGenerate8dot3Name)
27 {
28 USHORT i;
29
30 for (i = 0; i < 8; ++i)
31 {
32 WCHAR Buffer[12];
33 GENERATE_NAME_CONTEXT Context;
34 UNICODE_STRING LongName, ShortName, Expected;
35
36 RtlZeroMemory(&Context, sizeof(GENERATE_NAME_CONTEXT));
37 RtlInitUnicodeString(&LongName, Names[i]);
38 ShortName.Buffer = Buffer;
39 ShortName.Length = 0;
40 ShortName.MaximumLength = sizeof(Buffer);
41
42 RtlGenerate8dot3Name(&LongName, FALSE, &Context, &ShortName);
43 RtlInitUnicodeString(&Expected, ShortNames1[i]);
44 ok(RtlEqualUnicodeString(&Expected, &ShortName, FALSE), "Generated: %.*S. Expected: %.*S\n", ShortName.Length, ShortName.Buffer, Expected.Length, Expected.Buffer);
45
46 ShortName.Length = 0;
47 RtlGenerate8dot3Name(&LongName, FALSE, &Context, &ShortName);
48 RtlInitUnicodeString(&Expected, ShortNames2[i]);
49 ok(RtlEqualUnicodeString(&Expected, &ShortName, FALSE), "Generated: %.*S. Expected: %.*S\n", ShortName.Length, ShortName.Buffer, Expected.Length, Expected.Buffer);
50 }
51 }