1 /*
2  * PROJECT:         ReactOS API tests
3  * LICENSE:         LGPLv2.1+ - See COPYING.LIB in the top level directory
4  * PURPOSE:         Test for RtlUnicodeStringToAnsiString
5  * PROGRAMMERS:     Pierre Schweitzer <pierre@reactos.org>
6  */
7 
8 #include "precomp.h"
9 
START_TEST(RtlUnicodeStringToAnsiString)10 START_TEST(RtlUnicodeStringToAnsiString)
11 {
12     WCHAR BufferU[10];
13     CHAR BufferA[10];
14     UNICODE_STRING StringU;
15     ANSI_STRING StringA;
16     NTSTATUS Status;
17     DWORD i;
18 
19     memset(BufferU, 0xAA, sizeof(BufferU));
20     memset(BufferA, 0xAA, sizeof(BufferA));
21 
22     BufferU[0] = L'A';
23     BufferU[1] = UNICODE_NULL;
24 
25     StringU.Buffer = BufferU;
26     StringU.MaximumLength = 10 * sizeof(WCHAR);
27 
28     RtlInitUnicodeString(&StringU, BufferU);
29     ok(StringU.Length == 1 * sizeof(WCHAR), "Invalid size: %d\n", StringU.Length);
30     ok(StringU.MaximumLength == 2 * sizeof(WCHAR), "Invalid size: %d\n", StringU.MaximumLength);
31     ok(StringU.Buffer == BufferU, "Invalid buffer: %p\n", StringU.Buffer);
32 
33     StringA.Buffer = BufferA;
34     StringA.MaximumLength = 10 * sizeof(CHAR);
35 
36     Status = RtlUnicodeStringToAnsiString(&StringA, &StringU, FALSE);
37     ok(NT_SUCCESS(Status), "RtlUnicodeStringToAnsiString failed: %lx\n", Status);
38     ok(StringA.Length == 1 * sizeof(CHAR), "Invalid size: %d\n", StringA.Length);
39     ok(StringA.MaximumLength == 10 * sizeof(CHAR), "Invalid size: %d\n", StringA.MaximumLength);
40     ok(StringA.Buffer == BufferA, "Invalid buffer: %p\n", StringA.Buffer);
41 
42     for (i = 0; i < 10; ++i)
43     {
44         if (BufferA[i] == 0)
45         {
46             break;
47         }
48     }
49 
50     ok(i != 10, "String was not null terminated!\n");
51 }
52