From 98e25351838e8db3f2f7ae1f6b14233936168c34 Mon Sep 17 00:00:00 2001 From: florian <f.spreckelsen@inidscale.com> Date: Thu, 16 Sep 2021 10:39:59 +0200 Subject: [PATCH] TST: Re-activate unittests for set_datatype and set_value --- include/ccaosdb.h | 2 - test/test_ccaosdb.cpp | 302 +++++++++++++++++++++++++----------------- 2 files changed, 179 insertions(+), 125 deletions(-) diff --git a/include/ccaosdb.h b/include/ccaosdb.h index 2c37417..21ba884 100644 --- a/include/ccaosdb.h +++ b/include/ccaosdb.h @@ -264,8 +264,6 @@ int caosdb_connection_connection_manager_get_connection(caosdb_connection_connec * ENTITY STUFF AND TRANSACTIONS ****************************************************************************/ -// TODO(fspreck) implementations needed, and probably these declarations are -// not sufficient yet. typedef struct caosdb_transaction_transaction { void *wrapped_transaction; bool _deletable = false; diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp index 0a48c7b..48ad961 100644 --- a/test/test_ccaosdb.cpp +++ b/test/test_ccaosdb.cpp @@ -423,8 +423,10 @@ TEST_F(test_ccaosdb, test_entity) { caosdb_entity_entity_get_description(&entity, &out); EXPECT_EQ(strcmp(out, "The length of an object"), 0); + caosdb_entity_datatype in_type; + caosdb_entity_create_atomic_datatype(&in_type, "DOUBLE"); + caosdb_entity_entity_set_datatype(&entity, &in_type); // TODO(fspreck) - // caosdb_entity_entity_set_datatype(&entity, "DOUBLE", false, false); // bool is_list[] = {false}; // NOLINT // bool is_ref[] = {false}; // NOLINT // caosdb_entity_entity_get_datatype(&entity, &out, is_ref, is_list); @@ -432,7 +434,12 @@ TEST_F(test_ccaosdb, test_entity) { // EXPECT_FALSE(*is_list); // EXPECT_FALSE(*is_ref); - // caosdb_entity_entity_set_datatype(&entity, "Person", true, true); + // clear to re-use + return_code = caosdb_entity_delete_datatype(&in_type); + EXPECT_EQ(return_code, 0); + caosdb_entity_create_reference_list_datatype(&in_type, "Person"); + caosdb_entity_entity_set_datatype(&entity, &in_type); + // TODO(fspreck) // caosdb_entity_entity_get_datatype(&entity, &out, is_ref, is_list); // EXPECT_EQ(strcmp(out, "Person"), 0); // EXPECT_TRUE(*is_list); @@ -442,9 +449,12 @@ TEST_F(test_ccaosdb, test_entity) { caosdb_entity_entity_get_unit(&entity, &out); EXPECT_EQ(strcmp(out, "m"), 0); + caosdb_entity_value in_value; + return_code = caosdb_entity_create_double_value(&in_value, 5.0); + EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_entity_set_value(&entity, &in_value); + EXPECT_EQ(return_code, 0); // TODO(fspreck) - // return_code = caosdb_entity_entity_set_double_value(&entity, 5.0); - // EXPECT_EQ(return_code, 0); // double value[] = {0.0}; // NOLINT // return_code = caosdb_entity_entity_get_double_value(&entity, value); // EXPECT_EQ(return_code, 0); @@ -452,6 +462,10 @@ TEST_F(test_ccaosdb, test_entity) { return_code = caosdb_entity_delete_entity(&entity); EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_delete_datatype(&in_type); + EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_delete_value(&in_value); + EXPECT_EQ(return_code, 0); } TEST_F(test_ccaosdb, test_parent) { @@ -483,12 +497,14 @@ TEST_F(test_ccaosdb, test_property) { caosdb_entity_property_set_id(&property, "some_id"); caosdb_entity_property_set_name(&property, "some_name"); - // TODO(fspreck) - // caosdb_entity_property_set_datatype(&property, "TEXT", false, false); + caosdb_entity_datatype in_type; + caosdb_entity_create_atomic_datatype(&in_type, "TEXT"); + caosdb_entity_property_set_datatype(&property, &in_type); caosdb_entity_property_set_importance(&property, "FIX"); caosdb_entity_property_set_unit(&property, "some_unit"); - // TODO(fspreck) - // caosdb_entity_property_set_string_value(&property, "some_value"); + caosdb_entity_value in_value; + caosdb_entity_create_string_value(&in_value, "some_value"); + caosdb_entity_property_set_value(&property, &in_value); char *out = nullptr; // NOLINT caosdb_entity_property_get_id(&property, &out); @@ -517,121 +533,154 @@ TEST_F(test_ccaosdb, test_property) { return_code = caosdb_entity_delete_property(&property); EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_delete_datatype(&in_type); + EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_delete_value(&in_value); + EXPECT_EQ(return_code, 0); } // TODO(fspreck) -// TEST_F(test_ccaosdb, test_string_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, "TEXT", false, true); -// EXPECT_EQ(return_code, 0); - -// const char *value_list[] = {"val0", "val1", "val2"}; // NOLINT -// return_code = caosdb_entity_property_set_string_list_value(&property, value_list, 3); -// EXPECT_EQ(return_code, 0); - -// char *out = nullptr; // NOLINT -// bool is_ref[] = {false}; // NOLINT -// bool is_list[] = {false}; // NOLINT -// return_code = caosdb_entity_property_get_datatype(&property, &out, is_ref, is_list); -// EXPECT_EQ(return_code, 0); -// EXPECT_EQ(strcmp(out, "TEXT"), 0); -// 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++) { -// 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 -// } - -// return_code = caosdb_entity_delete_property(&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_string_list_property) { + + caosdb_entity_property property; + int return_code(caosdb_entity_create_property(&property)); + EXPECT_EQ(return_code, 0); + + caosdb_entity_datatype in_type; + return_code = caosdb_entity_create_atomic_list_datatype(&in_type, "TEXT"); + EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_property_set_datatype(&property, &in_type); + EXPECT_EQ(return_code, 0); + + caosdb_entity_value in_value; + const char *value_list[] = {"val0", "val1", "val2"}; // NOLINT + return_code = caosdb_entity_create_string_vector_value(&in_value, value_list, 3); + EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_property_set_value(&property, &in_value); + EXPECT_EQ(return_code, 0); + + // TODO(fspreck) + // char *out = nullptr; // NOLINT + // bool is_ref[] = {false}; // NOLINT + // bool is_list[] = {false}; // NOLINT + // return_code = caosdb_entity_property_get_datatype(&property, &out, is_ref, is_list); + // EXPECT_EQ(return_code, 0); + // EXPECT_EQ(strcmp(out, "TEXT"), 0); + // 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++) { + // 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 + // } + + return_code = caosdb_entity_delete_property(&property); + EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_delete_datatype(&in_type); + EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_delete_value(&in_value); + 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); + + caosdb_entity_datatype in_type; + caosdb_entity_create_atomic_list_datatype(&in_type, "INTEGER"); + return_code = caosdb_entity_property_set_datatype(&property, &in_type); + EXPECT_EQ(return_code, 0); + + const int64_t value_list[] = {1, 2, 3}; // NOLINT + caosdb_entity_value in_value; + caosdb_entity_create_int_vector_value(&in_value, value_list, 3); + return_code = caosdb_entity_property_set_value(&property, &in_value); + EXPECT_EQ(return_code, 0); + + // TODO(fspreck) + // 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); + return_code = caosdb_entity_delete_datatype(&in_type); + EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_delete_value(&in_value); + 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); + + caosdb_entity_datatype in_type; + caosdb_entity_create_atomic_list_datatype(&in_type, "BOOLEAN"); + return_code = caosdb_entity_property_set_datatype(&property, &in_type); + EXPECT_EQ(return_code, 0); + + const bool value_list[] = {true, true, false}; // NOLINT + caosdb_entity_value in_value; + caosdb_entity_create_bool_vector_value(&in_value, value_list, 3); + return_code = caosdb_entity_property_set_value(&property, &in_value); + EXPECT_EQ(return_code, 0); + + // TODO(fspreck) + // 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); + return_code = caosdb_entity_delete_datatype(&in_type); + EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_delete_value(&in_value); + EXPECT_EQ(return_code, 0); +} TEST_F(test_ccaosdb, test_entity_with_parent_and_property) { caosdb_entity_parent input_parent; @@ -648,9 +697,12 @@ TEST_F(test_ccaosdb, test_entity_with_parent_and_property) { caosdb_entity_property_set_id(&input_property, "property_id"); caosdb_entity_property_set_name(&input_property, "property_name"); - // TODO(fspreck) - // caosdb_entity_property_set_datatype(&input_property, "TEXT", false, false); - // caosdb_entity_property_set_string_value(&input_property, "property_value"); + caosdb_entity_datatype in_type; + caosdb_entity_create_atomic_datatype(&in_type, "TEXT"); + caosdb_entity_value in_value; + caosdb_entity_create_string_value(&in_value, "property_value"); + caosdb_entity_property_set_datatype(&input_property, &in_type); + caosdb_entity_property_set_value(&input_property, &in_value); caosdb_entity_entity entity; return_code = caosdb_entity_create_entity(&entity); @@ -724,6 +776,10 @@ TEST_F(test_ccaosdb, test_entity_with_parent_and_property) { EXPECT_EQ(return_code, 0); return_code = caosdb_entity_delete_entity(&entity); EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_delete_datatype(&in_type); + EXPECT_EQ(return_code, 0); + return_code = caosdb_entity_delete_value(&in_value); + EXPECT_EQ(return_code, 0); // This tests the `_deletable` flag. The wrapped cpp objects of // `output_parent` and `output_property` are owned by the entity, so -- GitLab