diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp index 90e72e59ebf69102c1abd2edbde1c1cbebc9ab79..cbf595f821f45807d8dd780cadd94bde47544fe8 100644 --- a/test/test_ccaosdb.cpp +++ b/test/test_ccaosdb.cpp @@ -24,6 +24,7 @@ #include "caosdb/status_code.h" // for StatusCode #include "caosdb_test_utility.h" // for EXPECT_THROW_MESSAGE, TEST_DATA_DIR #include "ccaosdb.h" // for caosdb_utility_get_env_fallback +#include <cstdint> // for int64_t #include <cstring> // for strcmp #include <gtest/gtest-message.h> // for Message #include <gtest/gtest-test-part.h> // for SuiteApiResolver, TestFactoryImpl @@ -263,7 +264,7 @@ TEST_F(test_ccaosdb, test_property) { EXPECT_EQ(return_code, 0); } -TEST_F(test_ccaosdb, test_list_property) { +TEST_F(test_ccaosdb, test_string_list_property) { caosdb_entity_property property; int return_code(caosdb_entity_create_property(&property)); @@ -285,12 +286,12 @@ TEST_F(test_ccaosdb, test_list_property) { EXPECT_FALSE(*is_ref); EXPECT_TRUE(*is_list); - int length[] = {0}; // NOLINT - return_code = caosdb_entity_property_get_value_list_length(&property, length); + int length = -1; // NOLINT + return_code = caosdb_entity_property_get_value_list_length(&property, &length); EXPECT_EQ(return_code, 0); - EXPECT_EQ(*length, 3); + EXPECT_EQ(length, 3); - for (int i = 0; i < *length; i++) { + for (int i = 0; i < length; i++) { return_code = caosdb_entity_property_get_string_list_value_at(&property, &out, i); EXPECT_EQ(return_code, 0); EXPECT_EQ(strcmp(value_list[i], out), 0); // NOLINT @@ -300,6 +301,82 @@ TEST_F(test_ccaosdb, test_list_property) { EXPECT_EQ(return_code, 0); } +TEST_F(test_ccaosdb, test_int_list_property) { + + caosdb_entity_property property; + int return_code(caosdb_entity_create_property(&property)); + EXPECT_EQ(return_code, 0); + + return_code = caosdb_entity_property_set_datatype(&property, "INTEGER", false, true); + EXPECT_EQ(return_code, 0); + + const int64_t value_list[] = {1, 2, 3}; // NOLINT + return_code = caosdb_entity_property_set_int_list_value(&property, &(value_list)[0], 3); + EXPECT_EQ(return_code, 0); + + char *dt_out = nullptr; // NOLINT + bool is_ref[] = {false}; // NOLINT + bool is_list[] = {false}; // NOLINT + return_code = caosdb_entity_property_get_datatype(&property, &dt_out, is_ref, is_list); + EXPECT_EQ(return_code, 0); + EXPECT_STREQ(dt_out, "INTEGER"); + EXPECT_FALSE(*is_ref); + EXPECT_TRUE(*is_list); + + int length = -1; // NOLINT + return_code = caosdb_entity_property_get_value_list_length(&property, &length); + EXPECT_EQ(return_code, 0); + EXPECT_EQ(length, 3); + + for (int i = 0; i < length; i++) { + int64_t out = -1; + return_code = caosdb_entity_property_get_int_list_value_at(&property, &out, i); + EXPECT_EQ(return_code, 0); + EXPECT_EQ(value_list[i], out); // NOLINT + } + + return_code = caosdb_entity_delete_property(&property); + EXPECT_EQ(return_code, 0); +} + +TEST_F(test_ccaosdb, test_bool_list_property) { + + caosdb_entity_property property; + int return_code(caosdb_entity_create_property(&property)); + EXPECT_EQ(return_code, 0); + + return_code = caosdb_entity_property_set_datatype(&property, "BOOLEAN", false, true); + EXPECT_EQ(return_code, 0); + + const bool value_list[] = {true, true, false}; // NOLINT + return_code = caosdb_entity_property_set_boolean_list_value(&property, &(value_list)[0], 3); + EXPECT_EQ(return_code, 0); + + char *dt_out = nullptr; // NOLINT + bool is_ref[] = {false}; // NOLINT + bool is_list[] = {false}; // NOLINT + return_code = caosdb_entity_property_get_datatype(&property, &dt_out, is_ref, is_list); + EXPECT_EQ(return_code, 0); + EXPECT_STREQ(dt_out, "BOOLEAN"); + EXPECT_FALSE(*is_ref); + EXPECT_TRUE(*is_list); + + int length = -1; // NOLINT + return_code = caosdb_entity_property_get_value_list_length(&property, &length); + EXPECT_EQ(return_code, 0); + EXPECT_EQ(length, 3); + + for (int i = 0; i < length; i++) { + bool out = true; + return_code = caosdb_entity_property_get_boolean_list_value_at(&property, &out, i); + EXPECT_EQ(return_code, 0); + EXPECT_EQ(value_list[i], out); // NOLINT + } + + return_code = caosdb_entity_delete_property(&property); + EXPECT_EQ(return_code, 0); +} + TEST_F(test_ccaosdb, test_entity_with_parent_and_property) { caosdb_entity_parent input_parent; int return_code(caosdb_entity_create_parent(&input_parent));