Skip to content
Snippets Groups Projects

ENH: Test insert/update/delete and files in Extern C

Merged Florian Spreckelsen requested to merge f-full-c into dev
All threads resolved!
1 file
+ 228
9
Compare changes
  • Side-by-side
  • Inline
+ 228
9
@@ -21,12 +21,56 @@
#include "caosdb/message_code.h" // for MessageCode
#include "caosdb/status_code.h" // for StatusCode
#include "ccaosdb.h" // for caosdb_info_version_info, caosdb_...
#include "gtest/gtest-message.h" // for Message
#include "gtest/gtest-test-part.h" // for TestPartResult
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, SuiteApiResolver
#include <cstring> // for strcmp
#include <gtest/gtest-message.h> // for Message
#include <gtest/gtest-test-part.h> // for TestPartResult
#include <gtest/gtest_pred_impl.h> // for Test, EXPECT_EQ, SuiteApiResolver
#include <memory> // for allocator, unique_ptr
TEST(test_ccaosdb, connection_ssl_authentication_success) {
class test_ccaosdb : public ::testing::Test {
protected:
void SetUp() override {}
/**
* Delete everything with id>99, C style
*/
void TearDown() override {
caosdb_connection_connection connection;
caosdb_connection_connection_manager_get_default_connection(&connection);
caosdb_transaction_transaction query_transaction;
caosdb_connection_connection_create_transaction(&connection,
&query_transaction);
caosdb_transaction_transaction_query(&query_transaction,
"FIND ENTITY WITH id > 99");
caosdb_transaction_transaction_execute(&query_transaction);
caosdb_transaction_result_set result_set;
caosdb_transaction_transaction_get_result_set(&query_transaction,
&result_set);
int count[] = {-1}; // NOLINT
caosdb_transaction_result_set_size(&result_set, count);
if (*count > 0) {
caosdb_transaction_transaction delete_transaction;
caosdb_connection_connection_create_transaction(&connection,
&delete_transaction);
caosdb_entity_entity entity;
char id[255] = {"id"}; // NOLINT
for (int i = 0; i < *count; i++) {
caosdb_transaction_result_set_at(&result_set, &entity, i);
caosdb_entity_entity_get_id(&entity, id);
caosdb_transaction_transaction_delete_by_id(&delete_transaction, id);
}
caosdb_transaction_transaction_execute(&delete_transaction);
caosdb_transaction_delete_transaction(&delete_transaction);
}
caosdb_transaction_delete_transaction(&query_transaction);
}
};
TEST_F(test_ccaosdb, connection_ssl_authentication_success) {
caosdb_connection_connection connection;
caosdb_connection_connection_manager_get_default_connection(&connection);
@@ -37,14 +81,14 @@ TEST(test_ccaosdb, connection_ssl_authentication_success) {
auto major = caosdb_constants_COMPATIBLE_SERVER_VERSION_MAJOR();
auto minor = caosdb_constants_COMPATIBLE_SERVER_VERSION_MINOR();
const auto *const pre_release =
caosdb_constants_COMPATIBLE_SERVER_VERSION_PRE_RELEASE();
caosdb_constants_COMPATIBLE_SERVER_VERSION_PRE_RELEASE();
EXPECT_EQ(major, version_info.major);
EXPECT_EQ(minor, version_info.minor);
EXPECT_STREQ(pre_release, version_info.pre_release);
}
TEST(test_ccaosdb, test_count_query) {
TEST_F(test_ccaosdb, test_count_query) {
caosdb_connection_connection connection;
int return_code(
@@ -75,7 +119,7 @@ TEST(test_ccaosdb, test_count_query) {
EXPECT_EQ(return_code, 0);
}
TEST(test_ccaosdb, test_query) {
TEST_F(test_ccaosdb, test_query) {
caosdb_connection_connection connection;
int return_code(
caosdb_connection_connection_manager_get_default_connection(&connection));
@@ -108,7 +152,7 @@ TEST(test_ccaosdb, test_query) {
EXPECT_EQ(return_code, 0);
}
TEST(test_ccaosdb, test_single_id_retrieve) {
TEST_F(test_ccaosdb, test_single_id_retrieve) {
caosdb_connection_connection connection;
int return_code(
caosdb_connection_connection_manager_get_default_connection(&connection));
@@ -154,7 +198,7 @@ TEST(test_ccaosdb, test_single_id_retrieve) {
EXPECT_EQ(return_code, 0);
}
TEST(test_ccaosdb, test_multi_id_retrieve) {
TEST_F(test_ccaosdb, test_multi_id_retrieve) {
caosdb_connection_connection connection;
int return_code(
caosdb_connection_connection_manager_get_default_connection(&connection));
@@ -216,3 +260,178 @@ TEST(test_ccaosdb, test_multi_id_retrieve) {
return_code = caosdb_transaction_delete_transaction(&transaction);
EXPECT_EQ(return_code, 0);
}
TEST_F(test_ccaosdb, test_insert_update_delete) {
caosdb_connection_connection connection;
caosdb_connection_connection_manager_get_default_connection(&connection);
caosdb_entity_entity original_entity;
caosdb_entity_create_entity(&original_entity);
caosdb_entity_entity_set_name(&original_entity, "TestName");
caosdb_entity_entity_set_role(&original_entity, "Property");
caosdb_entity_entity_set_datatype(&original_entity, "TEXT");
caosdb_transaction_transaction insert_transaction;
caosdb_connection_connection_create_transaction(&connection,
&insert_transaction);
caosdb_transaction_transaction_insert_entity(&insert_transaction,
&original_entity);
int return_code(caosdb_transaction_transaction_execute(&insert_transaction));
EXPECT_EQ(return_code, 0);
// Insert the entity and check results
caosdb_transaction_result_set insert_result_set;
caosdb_transaction_transaction_get_result_set(&insert_transaction,
&insert_result_set);
int count[] = {-1}; // NOLINT
caosdb_transaction_result_set_size(&insert_result_set, count);
EXPECT_EQ(*count, 1);
caosdb_entity_entity inserted_entity;
caosdb_transaction_result_set_at(&insert_result_set, &inserted_entity, 0);
char in[255] = {"id"}; // NOLINT
caosdb_entity_entity_get_id(&inserted_entity, in);
// Retrieve it again for checks and update
caosdb_transaction_transaction retrieve_transaction_1;
caosdb_connection_connection_create_transaction(&connection,
&retrieve_transaction_1);
caosdb_transaction_transaction_retrieve_by_id(&retrieve_transaction_1, in);
return_code = caosdb_transaction_transaction_execute(&retrieve_transaction_1);
EXPECT_EQ(return_code, 0);
caosdb_transaction_result_set retrieve_results_1;
caosdb_transaction_transaction_get_result_set(&retrieve_transaction_1,
&retrieve_results_1);
caosdb_transaction_result_set_size(&retrieve_results_1, count);
EXPECT_EQ(*count, 1);
caosdb_entity_entity retrieved_entity_1;
caosdb_transaction_result_set_at(&retrieve_results_1, &retrieved_entity_1, 0);
char out[255] = {"id"}; // NOLINT
caosdb_entity_entity_get_id(&retrieved_entity_1, out);
EXPECT_EQ(strcmp(in, out), 0);
caosdb_entity_entity_get_name(&original_entity, in);
caosdb_entity_entity_get_name(&retrieved_entity_1, out);
EXPECT_EQ(strcmp(in, out), 0);
caosdb_entity_entity_get_role(&original_entity, in);
caosdb_entity_entity_get_role(&retrieved_entity_1, out);
EXPECT_EQ(strcmp(in, out), 0);
caosdb_entity_entity_get_datatype(&original_entity, in);
caosdb_entity_entity_get_datatype(&retrieved_entity_1, out);
EXPECT_EQ(strcmp(in, out), 0);
// Change name and update
return_code =
caosdb_entity_entity_set_name(&retrieved_entity_1, "TestNameNew");
EXPECT_EQ(return_code, 0);
caosdb_transaction_transaction update_transaction;
caosdb_connection_connection_create_transaction(&connection,
&update_transaction);
caosdb_transaction_transaction_update_entity(&update_transaction,
&retrieved_entity_1);
return_code = caosdb_transaction_transaction_execute(&update_transaction);
EXPECT_EQ(return_code, 0);
caosdb_transaction_result_set update_results;
caosdb_transaction_transaction_get_result_set(&update_transaction,
&update_results);
caosdb_transaction_result_set_size(&update_results, count);
EXPECT_EQ(*count, 1);
caosdb_entity_entity updated_entity;
caosdb_transaction_result_set_at(&update_results, &updated_entity, 0);
caosdb_entity_entity_get_id(&inserted_entity, in);
caosdb_entity_entity_get_id(&updated_entity, out);
EXPECT_EQ(strcmp(in, out), 0);
// Retrieve again
caosdb_transaction_transaction retrieve_transaction_2;
caosdb_connection_connection_create_transaction(&connection,
&retrieve_transaction_2);
caosdb_transaction_transaction_retrieve_by_id(&retrieve_transaction_2, out);
return_code = caosdb_transaction_transaction_execute(&retrieve_transaction_2);
EXPECT_EQ(return_code, 0);
caosdb_transaction_result_set retrieve_results_2;
caosdb_transaction_transaction_get_result_set(&retrieve_transaction_2,
&retrieve_results_2);
caosdb_transaction_result_set_size(&retrieve_results_2, count);
EXPECT_EQ(*count, 1);
caosdb_entity_entity retrieved_entity_2;
caosdb_transaction_result_set_at(&retrieve_results_2, &retrieved_entity_2, 0);
caosdb_entity_entity_get_id(&retrieved_entity_2, out);
EXPECT_EQ(strcmp(in, out), 0);
caosdb_entity_entity_get_name(&retrieved_entity_1, in);
caosdb_entity_entity_get_name(&retrieved_entity_2, out);
EXPECT_EQ(strcmp(in, out), 0);
// Doesn't have the old name anymore
caosdb_entity_entity_get_name(&original_entity, in);
EXPECT_FALSE((strcmp(in, out) == 0));
// Everything else hasn't changed
caosdb_entity_entity_get_role(&original_entity, in);
caosdb_entity_entity_get_role(&retrieved_entity_2, out);
EXPECT_EQ(strcmp(in, out), 0);
caosdb_entity_entity_get_datatype(&original_entity, in);
caosdb_entity_entity_get_datatype(&retrieved_entity_2, out);
EXPECT_EQ(strcmp(in, out), 0);
// Now delete
caosdb_transaction_transaction delete_transaction;
caosdb_connection_connection_create_transaction(&connection,
&delete_transaction);
caosdb_entity_entity_get_id(&retrieved_entity_2, in);
caosdb_transaction_transaction_delete_by_id(&delete_transaction, in);
return_code = caosdb_transaction_transaction_execute(&delete_transaction);
EXPECT_EQ(return_code, 0);
caosdb_transaction_result_set delete_results;
caosdb_transaction_transaction_get_result_set(&delete_transaction,
&delete_results);
caosdb_transaction_result_set_size(&delete_results, count);
EXPECT_EQ(*count, 1);
caosdb_entity_entity deleted_entity;
caosdb_transaction_result_set_at(&delete_results, &deleted_entity, 0);
caosdb_entity_entity_get_id(&deleted_entity, out);
EXPECT_EQ(strcmp(in, out), 0);
// Try to retrieve again
caosdb_transaction_transaction retrieve_transaction_3;
caosdb_connection_connection_create_transaction(&connection,
&retrieve_transaction_3);
caosdb_transaction_transaction_retrieve_by_id(&retrieve_transaction_3, out);
return_code = caosdb_transaction_transaction_execute(&retrieve_transaction_3);
EXPECT_TRUE((return_code > 0));
caosdb_transaction_result_set retrieve_results_3;
caosdb_transaction_transaction_get_result_set(&retrieve_transaction_3,
&retrieve_results_3);
caosdb_transaction_result_set_size(&retrieve_results_3, count);
EXPECT_EQ(*count, 1);
caosdb_entity_entity retrieved_entity_3;
caosdb_transaction_result_set_at(&retrieve_results_3, &retrieved_entity_3, 0);
caosdb_entity_entity_get_errors_size(&retrieved_entity_3, count);
EXPECT_EQ(*count, 1);
caosdb_entity_message err_msg;
caosdb_entity_entity_get_error(&retrieved_entity_3, &err_msg, 0);
caosdb_entity_message_get_code(&err_msg, count);
EXPECT_EQ(*count, caosdb::entity::MessageCode::ENTITY_DOES_NOT_EXIST);
// Delete everything
caosdb_transaction_delete_transaction(&retrieve_transaction_3);
caosdb_transaction_delete_transaction(&delete_transaction);
caosdb_transaction_delete_transaction(&retrieve_transaction_2);
caosdb_transaction_delete_transaction(&update_transaction);
caosdb_transaction_delete_transaction(&retrieve_transaction_1);
caosdb_transaction_delete_transaction(&insert_transaction);
caosdb_entity_delete_entity(&original_entity);
}
TEST_F(test_ccaosdb, test_insert_with_prop_and_parent) {}
Loading