2 * PROJECT: ReactOS api tests
3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4 * PURPOSE: Test for CAtlList
5 * COPYRIGHT: Copyright 2016-2019 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
6 * Copyright 2019 Mark Jansen (mark.jansen@reactos.org)
15 int g_tests_executed
= 0;
16 int g_tests_failed
= 0;
17 void ok_func(const char *file
, int line
, bool value
, const char *fmt
, ...)
23 printf("%s (%d): ", file
, line
);
31 #define ok(value, ...) ok_func(__FILE__, __LINE__, value, __VA_ARGS__)
32 #define START_TEST(x) int main(void)
43 ok(list1
.GetCount() == 0, "Expected list1's size is zero, was %d\n", list1
.GetCount());
45 ok(list1
.GetCount() == 1, "Expected list1's size is 1, was %d\n", list1
.GetCount());
46 POSITION head
= list1
.AddHead(12);
47 ok(list1
.GetCount() == 2, "Expected list1's size is 2, was %d\n", list1
.GetCount());
48 POSITION tail
= list1
.AddTail(90);
49 ok(list1
.GetCount() == 3, "Expected list1's size is 3, was %d\n", list1
.GetCount());
51 list1
.InsertBefore(head
, -123);
52 list1
.InsertAfter(head
, 34); // no longer head, but the POSITION should still be valid..
54 list1
.InsertBefore(tail
, 78);
55 list1
.InsertAfter(tail
, -44);
57 int expected
[] = {-123, 12, 34, 56, 78, 90, -44 };
58 int expected_size
= sizeof(expected
) / sizeof(expected
[0]);
60 POSITION it
= list1
.GetHeadPosition();
63 ok(index
< expected_size
, "Too many items, expected %d, got %d!\n", expected_size
, (index
+1));
64 int value
= list1
.GetNext(it
);
65 if (index
< expected_size
)
67 ok(value
== expected
[index
], "Wrong value, got %d, expected %d\n", value
, expected
[index
]);
71 ok(0, "Extra value: %d\n", value
);
75 ok(it
== NULL
, "it does still point to something!\n");
78 printf("CAtlList: %i tests executed (0 marked as todo, %i failures), 0 skipped.\n", g_tests_executed
, g_tests_failed
);
79 return g_tests_failed
;