1.1 --- a/test/test_list.cpp Mon Apr 18 16:56:29 2022 +0200 1.2 +++ b/test/test_list.cpp Mon Apr 18 17:26:21 2022 +0200 1.3 @@ -92,7 +92,10 @@ 1.4 } 1.5 1.6 template<typename InputIter> 1.7 -static node_test_data create_nodes_test_data(InputIter begin, InputIter end) { 1.8 +static node_test_data create_nodes_test_data( 1.9 + InputIter begin, 1.10 + InputIter end 1.11 +) { 1.12 if (begin == end) return node_test_data{nullptr}; 1.13 node *first = new node; 1.14 first->data = *begin; 1.15 @@ -592,13 +595,17 @@ 1.16 } 1.17 1.18 void verifyCreate(CxList *list) const { 1.19 + EXPECT_EQ(list->content_destructor_type, CX_DESTRUCTOR_NONE); 1.20 EXPECT_EQ(list->size, 0); 1.21 EXPECT_EQ(list->capacity, (size_t) -1); 1.22 EXPECT_EQ(list->allocator, &testingAllocator); 1.23 EXPECT_EQ(list->cmpfunc, cmp_int); 1.24 } 1.25 1.26 - void verifyAdd(CxList *list, bool write_through) { 1.27 + void verifyAdd( 1.28 + CxList *list, 1.29 + bool write_through 1.30 + ) { 1.31 auto len = testdata_len; 1.32 cx_for_n (i, len) EXPECT_EQ(cxListAdd(list, &testdata.data[i]), 0); 1.33 EXPECT_EQ(list->size, len); 1.34 @@ -741,7 +748,10 @@ 1.35 } 1.36 } 1.37 1.38 - static void verifyCompare(CxList *left, CxList *right) { 1.39 + static void verifyCompare( 1.40 + CxList *left, 1.41 + CxList *right 1.42 + ) { 1.43 EXPECT_EQ(cxListCompare(left, right), 0); 1.44 int x = 42; 1.45 cxListAdd(left, &x); 1.46 @@ -757,7 +767,7 @@ 1.47 ASSERT_EQ(left->size, right->size); 1.48 EXPECT_LT(cxListCompare(left, right), 0); 1.49 EXPECT_GT(cxListCompare(right, left), 0); 1.50 - *(int*)cxListAt(left, 15) = 10; 1.51 + *(int *) cxListAt(left, 15) = 10; 1.52 EXPECT_EQ(cxListCompare(left, right), 0); 1.53 } 1.54 }; 1.55 @@ -879,3 +889,35 @@ 1.56 verifyCompare(left, right); 1.57 } 1.58 1.59 +TEST_F(PointerLinkedList, NoDestructor) { 1.60 + void *item = cxMalloc(&testingAllocator, sizeof(int)); 1.61 + auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cmp_int); 1.62 + cxListAdd(list, item); 1.63 + ASSERT_FALSE(testingAllocator.verify()); 1.64 + cxListDestroy(list); 1.65 + EXPECT_FALSE(testingAllocator.verify()); 1.66 + cxFree(&testingAllocator, item); 1.67 + EXPECT_TRUE(testingAllocator.verify()); 1.68 +} 1.69 + 1.70 +TEST_F(PointerLinkedList, SimpleDestructor) { 1.71 + int item = 0; 1.72 + auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cmp_int); 1.73 + list->content_destructor_type = CX_DESTRUCTOR_SIMPLE; 1.74 + list->simple_destructor = [](void *elem) { *(int *) elem = 42; }; 1.75 + cxListAdd(list, &item); 1.76 + cxListDestroy(list); 1.77 + EXPECT_EQ(item, 42); 1.78 +} 1.79 + 1.80 +TEST_F(PointerLinkedList, AdvancedDestructor) { 1.81 + void *item = cxMalloc(&testingAllocator, sizeof(int)); 1.82 + auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cmp_int); 1.83 + list->content_destructor_type = CX_DESTRUCTOR_ADVANCED; 1.84 + list->advanced_destructor.data = &testingAllocator; 1.85 + list->advanced_destructor.func = (cx_destructor_func2) cxFree; 1.86 + cxListAdd(list, item); 1.87 + ASSERT_FALSE(testingAllocator.verify()); 1.88 + cxListDestroy(list); 1.89 + EXPECT_TRUE(testingAllocator.verify()); 1.90 +}