1 /*
2  * PROJECT:     ReactOS Spooler Router API Tests
3  * LICENSE:     GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4  * PURPOSE:     Tests for MarshallUpStructuresArray
5  * COPYRIGHT:   Copyright 2018 Colin Finck (colin@reactos.org)
6  */
7 
8 #include <apitest.h>
9 
10 #define WIN32_NO_STATUS
11 #include <windef.h>
12 #include <winbase.h>
13 #include <marshalling/marshalling.h>
14 
15 #define INVALID_POINTER ((PVOID)(ULONG_PTR)0xdeadbeefdeadbeefULL)
16 
17 START_TEST(MarshallUpStructuresArray)
18 {
19     // Setting cElements to zero should yield success.
20     SetLastError(0xDEADBEEF);
21     ok(MarshallUpStructuresArray(0, NULL, 0, NULL, 0, FALSE), "MarshallUpStructuresArray returns FALSE!\n");
22     ok(GetLastError() == 0xDEADBEEF, "GetLastError returns %lu!\n", GetLastError());
23 
24     // Setting cElements non-zero should fail with ERROR_INVALID_PARAMETER.
25     SetLastError(0xDEADBEEF);
26     ok(!MarshallUpStructuresArray(0, NULL, 1, NULL, 0, FALSE), "MarshallUpStructuresArray returns TRUE!\n");
27     ok(GetLastError() == ERROR_INVALID_PARAMETER, "GetLastError returns %lu!\n", GetLastError());
28 
29     // This is triggered by both pStructuresArray and pInfo.
30     SetLastError(0xDEADBEEF);
31     ok(!MarshallUpStructuresArray(0, INVALID_POINTER, 1, NULL, 0, FALSE), "MarshallUpStructuresArray returns TRUE!\n");
32     ok(GetLastError() == ERROR_INVALID_PARAMETER, "GetLastError returns %lu!\n", GetLastError());
33 
34     SetLastError(0xDEADBEEF);
35     ok(!MarshallUpStructuresArray(0, NULL, 1, (const MARSHALLING_INFO*)INVALID_POINTER, 0, FALSE), "MarshallUpStructuresArray returns TRUE!\n");
36     ok(GetLastError() == ERROR_INVALID_PARAMETER, "GetLastError returns %lu!\n", GetLastError());
37 
38     // More testing is conducted in the MarshallDownStructuresArray test.
39 }
40