Skip to content
Snippets Groups Projects
Verified Commit 9e7416ee authored by Timm Fitschen's avatar Timm Fitschen
Browse files

Merge branch 'f-value-data-structs' of...

Merge branch 'f-value-data-structs' of gitlab.indiscale.com:caosdb/src/caosdb-cpplib into f-value-data-structs
parents 4336ee9d cd50b367
No related branches found
No related tags found
1 merge request!24API: Introduce value and datatype structs to Extern C
Pipeline #13414 passed
Pipeline: caosdb-cppinttest

#13423

    ......@@ -430,7 +430,20 @@ int caosdb_entity_delete_parent(caosdb_entity_parent *out);
    // TODO(fspreck) implementations, also list_datatypes, list_values...
    int caosdb_entity_create_datatype(caosdb_entity_datatype *out);
    int caosdb_entity_delete_datatype(caosdb_entity_datatype *out);
    int caosdb_entity_create_value(caosdb_entity_value *out);
    // VALUE CONSTRUCTORS (resolve overloaded constructors)
    int caosdb_entity_create_value(caosdb_entity_value *out, caosdb_entity_value *in);
    int caosdb_entity_create_int_value(caosdb_entity_value *out, const int64_t value);
    int caosdb_entity_create_string_value(caosdb_entity_value *out, const char *value);
    int caosdb_entity_create_double_value(caosdb_entity_value *out, const double value);
    int caosdb_entity_create_bool_value(caosdb_entity_value *out, const bool value);
    int caosdb_entity_create_int_list_value(caosdb_entity_value *out, const int64_t *value,
    const int length);
    int caosdb_entity_create_string_list_value(caosdb_entity_value *out, const char **value,
    const int length);
    int caosdb_entity_create_double_list_value(caosdb_entity_value *out, const double *value,
    const int length);
    int caosdb_entity_create_bool_list_value(caosdb_entity_value *out, const bool *value,
    const int length);
    int caosdb_entity_delete_value(caosdb_entity_value *out);
    // SETTERS FOR EVERYTHING THAT MAY BE SET
    ......
    This diff is collapsed.
    ......@@ -174,30 +174,32 @@ 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_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);
    EXPECT_EQ(strcmp(out, "DOUBLE"), 0);
    EXPECT_FALSE(*is_list);
    EXPECT_FALSE(*is_ref);
    caosdb_entity_entity_set_datatype(&entity, "Person", true, true);
    caosdb_entity_entity_get_datatype(&entity, &out, is_ref, is_list);
    EXPECT_EQ(strcmp(out, "Person"), 0);
    EXPECT_TRUE(*is_list);
    EXPECT_TRUE(*is_ref);
    // 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);
    // EXPECT_EQ(strcmp(out, "DOUBLE"), 0);
    // EXPECT_FALSE(*is_list);
    // EXPECT_FALSE(*is_ref);
    // caosdb_entity_entity_set_datatype(&entity, "Person", true, true);
    // caosdb_entity_entity_get_datatype(&entity, &out, is_ref, is_list);
    // EXPECT_EQ(strcmp(out, "Person"), 0);
    // EXPECT_TRUE(*is_list);
    // EXPECT_TRUE(*is_ref);
    caosdb_entity_entity_set_unit(&entity, "m");
    caosdb_entity_entity_get_unit(&entity, &out);
    EXPECT_EQ(strcmp(out, "m"), 0);
    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);
    EXPECT_EQ(*value, 5.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);
    // EXPECT_EQ(*value, 5.0);
    return_code = caosdb_entity_delete_entity(&entity);
    EXPECT_EQ(return_code, 0);
    ......@@ -232,10 +234,12 @@ TEST_F(test_ccaosdb, test_property) {
    caosdb_entity_property_set_id(&property, "some_id");
    caosdb_entity_property_set_name(&property, "some_name");
    caosdb_entity_property_set_datatype(&property, "TEXT", false, false);
    // TODO(fspreck)
    // caosdb_entity_property_set_datatype(&property, "TEXT", false, false);
    caosdb_entity_property_set_importance(&property, "FIX");
    caosdb_entity_property_set_unit(&property, "some_unit");
    caosdb_entity_property_set_string_value(&property, "some_value");
    // TODO(fspreck)
    // caosdb_entity_property_set_string_value(&property, "some_value");
    char *out = nullptr; // NOLINT
    caosdb_entity_property_get_id(&property, &out);
    ......@@ -244,12 +248,13 @@ TEST_F(test_ccaosdb, test_property) {
    caosdb_entity_property_get_name(&property, &out);
    EXPECT_EQ(strcmp(out, "some_name"), 0);
    bool is_ref[] = {false}; // NOLINT
    bool is_list[] = {false}; // NOLINT
    caosdb_entity_property_get_datatype(&property, &out, is_ref, is_list);
    EXPECT_EQ(strcmp(out, "TEXT"), 0);
    EXPECT_FALSE(*is_ref);
    EXPECT_FALSE(*is_list);
    // TODO(fspreck)
    // bool is_ref[] = {false}; // NOLINT
    // bool is_list[] = {false}; // NOLINT
    // caosdb_entity_property_get_datatype(&property, &out, is_ref, is_list);
    // EXPECT_EQ(strcmp(out, "TEXT"), 0);
    // EXPECT_FALSE(*is_ref);
    // EXPECT_FALSE(*is_list);
    caosdb_entity_property_get_importance(&property, &out);
    EXPECT_EQ(strcmp(out, "FIX"), 0);
    ......@@ -257,125 +262,127 @@ TEST_F(test_ccaosdb, test_property) {
    caosdb_entity_property_get_unit(&property, &out);
    EXPECT_EQ(strcmp(out, "some_unit"), 0);
    caosdb_entity_property_get_string_value(&property, &out);
    EXPECT_EQ(strcmp(out, "some_value"), 0);
    // TODO(fspreck)
    // caosdb_entity_property_get_string_value(&property, &out);
    // EXPECT_EQ(strcmp(out, "some_value"), 0);
    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);
    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);
    }
    // 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_entity_with_parent_and_property) {
    caosdb_entity_parent input_parent;
    ......@@ -392,8 +399,9 @@ 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");
    caosdb_entity_property_set_datatype(&input_property, "TEXT", false, false);
    caosdb_entity_property_set_string_value(&input_property, "property_value");
    // TODO(fspreck)
    // caosdb_entity_property_set_datatype(&input_property, "TEXT", false, false);
    // caosdb_entity_property_set_string_value(&input_property, "property_value");
    caosdb_entity_entity entity;
    return_code = caosdb_entity_create_entity(&entity);
    ......@@ -432,19 +440,21 @@ TEST_F(test_ccaosdb, test_entity_with_parent_and_property) {
    caosdb_entity_property_get_name(&output_property, &out);
    EXPECT_EQ(strcmp(in, out), 0);
    bool is_list[] = {false}; // NOLINT
    bool is_ref[] = {false}; // NOLINT
    caosdb_entity_property_get_datatype(&input_property, &in, is_ref, is_list);
    EXPECT_FALSE(*is_list);
    EXPECT_FALSE(*is_ref);
    caosdb_entity_property_get_datatype(&output_property, &out, is_ref, is_list);
    EXPECT_FALSE(*is_list);
    EXPECT_FALSE(*is_ref);
    EXPECT_EQ(strcmp(in, out), 0);
    caosdb_entity_property_get_string_value(&input_property, &in);
    caosdb_entity_property_get_string_value(&output_property, &out);
    EXPECT_EQ(strcmp(in, out), 0);
    // TODO(fspreck)
    // bool is_list[] = {false}; // NOLINT
    // bool is_ref[] = {false}; // NOLINT
    // caosdb_entity_property_get_datatype(&input_property, &in, is_ref, is_list);
    // EXPECT_FALSE(*is_list);
    // EXPECT_FALSE(*is_ref);
    // caosdb_entity_property_get_datatype(&output_property, &out, is_ref, is_list);
    // EXPECT_FALSE(*is_list);
    // EXPECT_FALSE(*is_ref);
    // EXPECT_EQ(strcmp(in, out), 0);
    // TODO(fspreck)
    // caosdb_entity_property_get_string_value(&input_property, &in);
    // caosdb_entity_property_get_string_value(&output_property, &out);
    // EXPECT_EQ(strcmp(in, out), 0);
    caosdb_entity_parent output_parent;
    return_code = caosdb_entity_entity_get_parent(&entity, &output_parent, 0);
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment