Skip to content

Commit 78ff2f0

Browse files
committed
Add error injection test suite for array list
1 parent 7437f3c commit 78ff2f0

3 files changed

Lines changed: 79 additions & 2 deletions

File tree

libs/utils/gtest/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,9 @@ if (LINKER_WRAP_SUPPORTED)
8282
src/FileUtilsErrorInjectionTestSuite.cc
8383
src/ConvertUtilsErrorInjectionTestSuite.cc
8484
src/IpUtilsErrorInjectionTestSuite.cc
85-
)
86-
target_link_libraries(test_utils_with_ei PRIVATE Celix::zip_ei Celix::stdio_ei Celix::stat_ei Celix::fts_ei Celix::utils_obj Celix::utils_ei Celix::ifaddrs_ei GTest::gtest GTest::gtest_main)
85+
src/ArrayListErrorInjectionTestSuite.cc
86+
)
87+
target_link_libraries(test_utils_with_ei PRIVATE Celix::zip_ei Celix::stdio_ei Celix::stat_ei Celix::fts_ei Celix::utils_obj Celix::utils_ei Celix::ifaddrs_ei Celix::malloc_ei GTest::gtest GTest::gtest_main)
8788
target_include_directories(test_utils_with_ei PRIVATE ../src) #for version_private (needs refactoring of test)
8889
celix_deprecated_utils_headers(test_utils_with_ei)
8990
add_dependencies(test_utils_with_ei test_utils_resources)
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
#include <gtest/gtest.h>
21+
22+
#include "celix_array_list.h"
23+
#include "malloc_ei.h"
24+
25+
class ArrayListErrorInjectionTestSuite : public ::testing::Test {
26+
public:
27+
ArrayListErrorInjectionTestSuite() = default;
28+
~ArrayListErrorInjectionTestSuite() noexcept override {
29+
celix_ei_expect_realloc(nullptr, 0, nullptr);
30+
}
31+
};
32+
33+
TEST_F(ArrayListErrorInjectionTestSuite, TestAddFunctions) {
34+
//Given an array list with a capacity of 10 (whitebox knowledge)
35+
auto* list = celix_arrayList_create();
36+
37+
//When adding 10 elements, no error is expected
38+
for (int i = 0; i < 10; ++i) {
39+
EXPECT_EQ(CELIX_SUCCESS, celix_arrayList_addInt(list, i));
40+
}
41+
EXPECT_EQ(10, celix_arrayList_size(list));
42+
43+
//And realloc is primed to fail
44+
celix_ei_expect_realloc(CELIX_EI_UNKNOWN_CALLER, 1, nullptr);
45+
46+
//Then adding an element should fail
47+
EXPECT_EQ(CELIX_ENOMEM, celix_arrayList_addInt(list, 10));
48+
EXPECT_EQ(10, celix_arrayList_size(list));
49+
}

libs/utils/gtest/src/ArrayListTestSuite.cc

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,3 +230,30 @@ TEST_F(ArrayListTestSuite, TestSortForArrayList) {
230230

231231
celix_arrayList_destroy(list);
232232
}
233+
234+
TEST_F(ArrayListTestSuite, TestReturnStatusAddFunctions) {
235+
auto* list = celix_arrayList_create();
236+
ASSERT_TRUE(list != nullptr);
237+
EXPECT_EQ(0, celix_arrayList_size(list));
238+
239+
//no error, return status is CELIX_SUCCESS
240+
EXPECT_EQ(CELIX_SUCCESS, celix_arrayList_addInt(list, 1));
241+
EXPECT_EQ(1, celix_arrayList_size(list));
242+
243+
EXPECT_EQ(CELIX_SUCCESS, celix_arrayList_addLong(list, 2L));
244+
EXPECT_EQ(2, celix_arrayList_size(list));
245+
246+
EXPECT_EQ(CELIX_SUCCESS, celix_arrayList_addFloat(list, 3.0f));
247+
EXPECT_EQ(3, celix_arrayList_size(list));
248+
249+
EXPECT_EQ(CELIX_SUCCESS, celix_arrayList_addDouble(list, 4.0));
250+
EXPECT_EQ(4, celix_arrayList_size(list));
251+
252+
EXPECT_EQ(CELIX_SUCCESS, celix_arrayList_addBool(list, true));
253+
EXPECT_EQ(5, celix_arrayList_size(list));
254+
255+
EXPECT_EQ(CELIX_SUCCESS, celix_arrayList_add(list, (void*)0x42));
256+
EXPECT_EQ(6, celix_arrayList_size(list));
257+
258+
celix_arrayList_destroy(list);
259+
}

0 commit comments

Comments
 (0)