1 /* 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) 7 */ 8 9 #ifdef HAVE_APITEST 10 #include <apitest.h> 11 #else 12 #include "atltest.h" 13 #endif 14 15 #include <atlbase.h> 16 #include <atlcoll.h> 17 18 19 START_TEST(CAtlList) 20 { 21 CAtlList<int> list1; 22 23 ok_size_t(list1.GetCount(), 0); 24 list1.AddTail(56); 25 ok_size_t(list1.GetCount(), 1); 26 POSITION head = list1.AddHead(12); 27 ok_size_t(list1.GetCount(), 2); 28 POSITION tail = list1.AddTail(90); 29 ok_size_t(list1.GetCount(), 3); 30 31 list1.InsertBefore(head, -123); 32 list1.InsertAfter(head, 34); // no longer head, but the POSITION should still be valid.. 33 34 list1.InsertBefore(tail, 78); 35 list1.InsertAfter(tail, -44); 36 37 int expected[] = {-123, 12, 34, 56, 78, 90, -44 }; 38 int expected_size = sizeof(expected) / sizeof(expected[0]); 39 int index = 0; 40 POSITION it = list1.GetHeadPosition(); 41 while (it != NULL) 42 { 43 ok(index < expected_size, "Too many items, expected %d, got %d!\n", expected_size, (index+1)); 44 int value = list1.GetNext(it); 45 if (index < expected_size) 46 { 47 ok(value == expected[index], "Wrong value, got %d, expected %d\n", value, expected[index]); 48 } 49 else 50 { 51 ok(0, "Extra value: %d\n", value); 52 } 53 index++; 54 } 55 ok(it == NULL, "it does still point to something!\n"); 56 } 57