This is an automated email from the ASF dual-hosted git repository. pnoltes pushed a commit to branch feature/674-improve-properties in repository https://gitbox.apache.org/repos/asf/celix.git
commit dbfb90d744d73c84704840bd1b8a3a959f1eec9b Author: Pepijn Noltes <pnol...@apache.org> AuthorDate: Mon Jan 22 19:50:31 2024 +0100 Add additional properties ei tests --- .../error_injector/celix_array_list/CMakeLists.txt | 1 + .../celix_array_list/include/celix_array_list_ei.h | 2 + .../celix_array_list/src/celix_array_list_ei.cc | 7 ++ .../gtest/src/PropertiesErrorInjectionTestSuite.cc | 109 +++++++++++++++++++++ 4 files changed, 119 insertions(+) diff --git a/libs/utils/error_injector/celix_array_list/CMakeLists.txt b/libs/utils/error_injector/celix_array_list/CMakeLists.txt index 3b56face..488a0cd7 100644 --- a/libs/utils/error_injector/celix_array_list/CMakeLists.txt +++ b/libs/utils/error_injector/celix_array_list/CMakeLists.txt @@ -23,6 +23,7 @@ target_link_options(array_list_ei INTERFACE LINKER:--wrap,celix_arrayList_create LINKER:--wrap,celix_arrayList_createWithOptions LINKER:--wrap,celix_arrayList_add + LINKER:--wrap,celix_arrayList_addString LINKER:--wrap,celix_arrayList_addInt LINKER:--wrap,celix_arrayList_addLong LINKER:--wrap,celix_arrayList_addUInt diff --git a/libs/utils/error_injector/celix_array_list/include/celix_array_list_ei.h b/libs/utils/error_injector/celix_array_list/include/celix_array_list_ei.h index 01965ade..09de817f 100644 --- a/libs/utils/error_injector/celix_array_list/include/celix_array_list_ei.h +++ b/libs/utils/error_injector/celix_array_list/include/celix_array_list_ei.h @@ -32,6 +32,8 @@ CELIX_EI_DECLARE(celix_arrayList_createWithOptions, celix_array_list_t*); CELIX_EI_DECLARE(celix_arrayList_add, celix_status_t); +CELIX_EI_DECLARE(celix_arrayList_addString, celix_status_t); + CELIX_EI_DECLARE(celix_arrayList_addInt, celix_status_t); CELIX_EI_DECLARE(celix_arrayList_addLong, celix_status_t); diff --git a/libs/utils/error_injector/celix_array_list/src/celix_array_list_ei.cc b/libs/utils/error_injector/celix_array_list/src/celix_array_list_ei.cc index 45a4a184..817b6f1d 100644 --- a/libs/utils/error_injector/celix_array_list/src/celix_array_list_ei.cc +++ b/libs/utils/error_injector/celix_array_list/src/celix_array_list_ei.cc @@ -42,6 +42,13 @@ celix_status_t __wrap_celix_arrayList_add(celix_array_list_t* list, void* value) return __real_celix_arrayList_add(list, value); } +celix_status_t __real_celix_arrayList_addString(celix_array_list_t* list, const char* value); +CELIX_EI_DEFINE(celix_arrayList_addString, celix_status_t) +celix_status_t __wrap_celix_arrayList_addString(celix_array_list_t* list, const char* value) { + CELIX_EI_IMPL(celix_arrayList_addString); + return __real_celix_arrayList_addString(list, value); +} + celix_status_t __real_celix_arrayList_addInt(celix_array_list_t* list, int value); CELIX_EI_DEFINE(celix_arrayList_addInt, celix_status_t) celix_status_t __wrap_celix_arrayList_addInt(celix_array_list_t* list, int value) { diff --git a/libs/utils/gtest/src/PropertiesErrorInjectionTestSuite.cc b/libs/utils/gtest/src/PropertiesErrorInjectionTestSuite.cc index c1fa7d8b..18ec2900 100644 --- a/libs/utils/gtest/src/PropertiesErrorInjectionTestSuite.cc +++ b/libs/utils/gtest/src/PropertiesErrorInjectionTestSuite.cc @@ -345,6 +345,115 @@ TEST_F(PropertiesErrorInjectionTestSuite, GetAsArrayWithArrayListCopyFailedTest) ASSERT_EQ(nullptr, versions); } +TEST_F(PropertiesErrorInjectionTestSuite, SetArrayWithArrayListCopyFailedTest) { + //Given a properties set + celix_autoptr(celix_properties_t) props = celix_properties_create(); + + //And a (empty) array list + celix_autoptr(celix_array_list_t) list = celix_arrayList_create(); + + // When a celix_arrayList_copy error injection is set for celix_properties_setLongArrayList + celix_ei_expect_celix_arrayList_copy((void*)celix_properties_setLongArrayList, 0, nullptr); + + // Then the celix_properties_setLongArrayList call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setLongArrayList(props, "longArray", list)); + + // When a celix_arrayList_copy error injection is set for celix_properties_setDoubleArrayList + celix_ei_expect_celix_arrayList_copy((void*)celix_properties_setDoubleArrayList, 0, nullptr); + + // Then the celix_properties_setDoubleArrayList call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setDoubleArrayList(props, "doubleArray", list)); + + // When a celix_arrayList_copy error injection is set for celix_properties_setBoolArrayList + celix_ei_expect_celix_arrayList_copy((void*)celix_properties_setBoolArrayList, 0, nullptr); + + // Then the celix_properties_setBoolArrayList call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setBoolArrayList(props, "boolArray", list)); + + // When a celix_arrayList_createWithOptions error injection is set for celix_properties_setVersionArrayList + celix_ei_expect_celix_arrayList_createWithOptions((void*)celix_properties_setVersionArrayList, 0, nullptr); + + // Then the celix_properties_setVersionArrayList call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setVersionArrayList(props, "versionArray", list)); + + // When a celix_arrayList_createWithOptions error injection is set for celix_properties_setStringArrayList + celix_ei_expect_celix_arrayList_createWithOptions((void*)celix_properties_setStringArrayList, 0, nullptr); + + // Then the celix_properties_setStringArrayList call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setStringArrayList(props, "stringArray", list)); + + + //Given a raw array for each type + long longsArray[] = {1, 2, 3}; + double doublesArray[] = {1.1, 2.2, 3.3}; + bool boolsArray[] = {true, false, true}; + celix_autoptr(celix_version_t) v = celix_version_create(1, 2, 3, "qualifier"); + const celix_version_t* versionsArray[] = {v, v, v}; + const char* stringsArray[] = {"string", "string2"}; + + + // When a celix_arrayList_create error injection is set for celix_properties_setLongs + celix_ei_expect_celix_arrayList_create((void*)celix_properties_setLongs, 0, nullptr); + + // Then the celix_properties_setLongs call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setLongs(props, "longArray", longsArray, 3)); + + // When a celix_arrayList_create error injection is set for celix_properties_setDoubles + celix_ei_expect_celix_arrayList_create((void*)celix_properties_setDoubles, 0, nullptr); + + // Then the celix_properties_setDoubles call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setDoubles(props, "doubleArray", doublesArray, 3)); + + // When a celix_arrayList_create error injection is set for celix_properties_setBooleans + celix_ei_expect_celix_arrayList_create((void*)celix_properties_setBooleans, 0, nullptr); + + // Then the celix_properties_setBooleans call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setBooleans(props, "boolArray", boolsArray, 3)); + + // When a celix_arrayList_createWithOptions error injection is set for celix_properties_setVersions + celix_ei_expect_celix_arrayList_createWithOptions((void*)celix_properties_setVersions, 0, nullptr); + + // Then the celix_properties_setVersions call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setVersions(props, "versionArray", versionsArray, 3)); + + // When a celix_arrayList_createWithOptions error injection is set for celix_properties_setStrings + celix_ei_expect_celix_arrayList_createWithOptions((void*)celix_properties_setStrings, 0, nullptr); + + // Then the celix_properties_setStrings call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setStrings(props, "stringArray", stringsArray, 3)); + + + // When a celix_arrayList_addLong error injection is set for celix_properties_setLongArrayList + celix_ei_expect_celix_arrayList_addLong((void*)celix_properties_setLongs, 0, CELIX_ENOMEM); + + // Then the celix_properties_setLongArrayList call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setLongs(props, "longArray", longsArray, 3)); + + // When a celix_arrayList_addDouble error injection is set for celix_properties_setDoubleArrayList + celix_ei_expect_celix_arrayList_addDouble((void*)celix_properties_setDoubles, 0, CELIX_ENOMEM); + + // Then the celix_properties_setDoubleArrayList call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setDoubles(props, "doubleArray", doublesArray, 3)); + + // When a celix_arrayList_addBool error injection is set for celix_properties_setBoolArrayList + celix_ei_expect_celix_arrayList_addBool((void*)celix_properties_setBooleans, 0, CELIX_ENOMEM); + + // Then the celix_properties_setBoolArrayList call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setBooleans(props, "boolArray", boolsArray, 3)); + + // When a celix_arrayList_add error injection is set for celix_properties_setVersionArrayList + celix_ei_expect_celix_arrayList_add((void*)celix_properties_setVersions, 0, CELIX_ENOMEM); + + // Then the celix_properties_setVersionArrayList call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setVersions(props, "versionArray", versionsArray, 3)); + + // When a celix_arrayList_addString error injection is set for celix_properties_setStringArrayList + celix_ei_expect_celix_arrayList_addString((void*)celix_properties_setStrings, 0, CELIX_ENOMEM); + + // Then the celix_properties_setStringArrayList call fails + EXPECT_EQ(CELIX_ENOMEM, celix_properties_setStrings(props, "stringArray", stringsArray, 3)); +} + TEST_F(PropertiesErrorInjectionTestSuite, AssignFailureTest) { //Given a filled properties and a key and value