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

Reply via email to