diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ec9d39041bf87350c1b018615f96203475ae01a9..18cb4da07c0d780d0a335bfde0cc177876329efb 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -23,8 +23,9 @@ ####################################################################### set(test_cases test_connection - test_transaction test_list_properties + test_properties + test_transaction test_ccaosdb ) diff --git a/test/caosdb_test_utility.h b/test/caosdb_test_utility.h index 4cde3dc5059acf60a04b071154b44a59b67e9833..4c97c203a8ab55c9d239d824cd274fe3b99aa60b 100644 --- a/test/caosdb_test_utility.h +++ b/test/caosdb_test_utility.h @@ -33,16 +33,16 @@ */ #define EXPECT_THROW_MESSAGE(statement, exeption_type, message) \ EXPECT_THROW( \ - try { statement; } catch (const exeption_type &e) { \ - EXPECT_EQ(std::string(e.what()), message); \ - throw; \ - }, \ - exeption_type) + try { statement; } catch (const exeption_type &e) { \ + EXPECT_EQ(std::string(e.what()), message); \ + throw; \ + }, \ + exeption_type) #define ASSERT_THROW_MESSAGE(statement, exeption_type, message) \ ASSERT_THROW( \ - try { statement; } catch (const exeption_type &e) { \ - ASSERT_EQ(std::string(e.what()), message); \ - throw; \ - }, \ - exeption_type) + try { statement; } catch (const exeption_type &e) { \ + ASSERT_EQ(std::string(e.what()), message); \ + throw; \ + }, \ + exeption_type) #endif diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp index ecc3eb59b63950f76d5cd342ba0fac8aa17c2639..64ef436100824845e52b2a39511e6ed1a86a365c 100644 --- a/test/test_ccaosdb.cpp +++ b/test/test_ccaosdb.cpp @@ -18,19 +18,19 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -#include "caosdb/file_transmission/file_reader.h" // for FileReader #include "caosdb/file_transmission/file_writer.h" // for FileWriter -#include "caosdb/message_code.h" // for MessageCode -#include "caosdb/status_code.h" // for StatusCode -#include "ccaosdb.h" // for caosdb_info_version_info, caosdb_... -#include <boost/filesystem/path.hpp> // for path -#include <boost/filesystem/path_traits.hpp> // for filesystem -#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 <iostream> -#include <memory> // for allocator, unique_ptr +#include "caosdb/message_code.h" // for ENTITY_DOES_NOT_EXIST +#include "caosdb/status_code.h" // for GO_ON, StatusCode +#include "ccaosdb.h" // for caosdb_connection_... +#include <boost/filesystem/operations.hpp> // for remove +#include <boost/filesystem/path.hpp> // for path +#include <boost/filesystem/path_traits.hpp> // for filesystem +#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 EXPECT_EQ, TestInfo +#include <iostream> // for operator<<, endl +#include <string> // for allocator, string namespace fs = boost::filesystem; class test_ccaosdb : public ::testing::Test { @@ -109,7 +109,7 @@ TEST_F(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); @@ -120,12 +120,12 @@ TEST_F(test_ccaosdb, test_count_query) { caosdb_connection_connection connection; int return_code( - caosdb_connection_connection_manager_get_default_connection(&connection)); + caosdb_connection_connection_manager_get_default_connection(&connection)); EXPECT_EQ(return_code, 0); caosdb_transaction_transaction transaction; - return_code = caosdb_connection_connection_create_transaction(&connection, - &transaction); + return_code = + caosdb_connection_connection_create_transaction(&connection, &transaction); EXPECT_EQ(return_code, 0); // COUNT query with an empty result @@ -139,7 +139,7 @@ TEST_F(test_ccaosdb, test_count_query) { long dummy(-1); // NOLINT long *count = &dummy; // NOLINT return_code = - caosdb_transaction_transaction_get_count_result(&transaction, count); + caosdb_transaction_transaction_get_count_result(&transaction, count); EXPECT_EQ(return_code, 0); EXPECT_EQ(*count, 0); @@ -150,12 +150,12 @@ TEST_F(test_ccaosdb, test_count_query) { TEST_F(test_ccaosdb, test_query) { caosdb_connection_connection connection; int return_code( - caosdb_connection_connection_manager_get_default_connection(&connection)); + caosdb_connection_connection_manager_get_default_connection(&connection)); EXPECT_EQ(return_code, 0); caosdb_transaction_transaction transaction; - return_code = caosdb_connection_connection_create_transaction(&connection, - &transaction); + return_code = + caosdb_connection_connection_create_transaction(&connection, &transaction); EXPECT_EQ(return_code, 0); return_code = caosdb_transaction_transaction_query(&transaction, @@ -167,7 +167,7 @@ TEST_F(test_ccaosdb, test_query) { caosdb_transaction_result_set result_set; return_code = - caosdb_transaction_transaction_get_result_set(&transaction, &result_set); + caosdb_transaction_transaction_get_result_set(&transaction, &result_set); EXPECT_EQ(return_code, 0); int dummy(-1); @@ -183,16 +183,16 @@ TEST_F(test_ccaosdb, test_query) { TEST_F(test_ccaosdb, test_single_id_retrieve) { caosdb_connection_connection connection; int return_code( - caosdb_connection_connection_manager_get_default_connection(&connection)); + caosdb_connection_connection_manager_get_default_connection(&connection)); EXPECT_EQ(return_code, 0); caosdb_transaction_transaction transaction; - return_code = caosdb_connection_connection_create_transaction(&connection, - &transaction); + return_code = + caosdb_connection_connection_create_transaction(&connection, &transaction); EXPECT_EQ(return_code, 0); return_code = - caosdb_transaction_transaction_retrieve_by_id(&transaction, "21"); + caosdb_transaction_transaction_retrieve_by_id(&transaction, "21"); EXPECT_EQ(return_code, caosdb::StatusCode::GO_ON); return_code = caosdb_transaction_transaction_execute(&transaction); @@ -200,7 +200,7 @@ TEST_F(test_ccaosdb, test_single_id_retrieve) { caosdb_transaction_result_set result_set; return_code = - caosdb_transaction_transaction_get_result_set(&transaction, &result_set); + caosdb_transaction_transaction_get_result_set(&transaction, &result_set); EXPECT_EQ(return_code, 0); int dummy(-1); @@ -229,17 +229,17 @@ TEST_F(test_ccaosdb, test_single_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)); + caosdb_connection_connection_manager_get_default_connection(&connection)); EXPECT_EQ(return_code, 0); caosdb_transaction_transaction transaction; - return_code = caosdb_connection_connection_create_transaction(&connection, - &transaction); + return_code = + caosdb_connection_connection_create_transaction(&connection, &transaction); EXPECT_EQ(return_code, 0); const char *ids[] = {"20", "21", "22"}; // NOLINT return_code = - caosdb_transaction_transaction_retrieve_by_ids(&transaction, ids, 3); + caosdb_transaction_transaction_retrieve_by_ids(&transaction, ids, 3); EXPECT_EQ(return_code, caosdb::StatusCode::GO_ON); return_code = caosdb_transaction_transaction_execute(&transaction); @@ -248,7 +248,7 @@ TEST_F(test_ccaosdb, test_multi_id_retrieve) { caosdb_transaction_result_set result_set; return_code = - caosdb_transaction_transaction_get_result_set(&transaction, &result_set); + caosdb_transaction_transaction_get_result_set(&transaction, &result_set); EXPECT_EQ(return_code, 0); int dummy(-1); @@ -361,7 +361,7 @@ TEST_F(test_ccaosdb, test_insert_update_delete) { // Change name and update return_code = - caosdb_entity_entity_set_name(&retrieved_entity_1, "TestNameNew"); + 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, @@ -650,13 +650,13 @@ TEST_F(test_ccaosdb, test_up_n_download_file) { // return_code = caosdb_transaction_transaction_retrieve_by_id( // &retrieve_transaction_1, rec_id); return_code = caosdb_transaction_transaction_retrieve_and_download_file_by_id( - &retrieve_transaction_1, rec_id, test_download_file_1.c_str()); + &retrieve_transaction_1, rec_id, test_download_file_1.c_str()); EXPECT_EQ(return_code, caosdb::StatusCode::GO_ON); return_code = caosdb_transaction_transaction_execute(&retrieve_transaction_1); EXPECT_EQ(return_code, 0); caosdb_transaction_result_set result_set; return_code = caosdb_transaction_transaction_get_result_set( - &retrieve_transaction_1, &result_set); + &retrieve_transaction_1, &result_set); EXPECT_EQ(return_code, 0); } diff --git a/test/test_connection.cpp b/test/test_connection.cpp index 28c1660306454039cd5ed8ca140e9f0ca0bd50e7..169fc9df1a2bd5d3e71aabf9a7b563402f733895 100644 --- a/test/test_connection.cpp +++ b/test/test_connection.cpp @@ -62,10 +62,10 @@ TEST(test_connection, connect_somehost_42347_fails) { TEST(test_connection, connection_insecure_authentication_error_anonymous) { const auto *port_str = - caosdb::utility::get_env_fallback("CAOSDB_SERVER_GRPC_PORT_HTTP", "8080"); + caosdb::utility::get_env_fallback("CAOSDB_SERVER_GRPC_PORT_HTTP", "8080"); auto port = std::stoi(port_str); const auto *const host = - caosdb::utility::get_env_fallback("CAOSDB_SERVER_HOST", "localhost"); + caosdb::utility::get_env_fallback("CAOSDB_SERVER_HOST", "localhost"); auto config = InsecureConnectionConfiguration(host, port); auto connection = Connection(config); @@ -74,13 +74,13 @@ TEST(test_connection, connection_insecure_authentication_error_anonymous) { } TEST(test_connection, connection_ssl_authentication_error_anonymous) { - const auto *port_str = caosdb::utility::get_env_fallback( - "CAOSDB_SERVER_GRPC_PORT_HTTPS", "8443"); + const auto *port_str = + caosdb::utility::get_env_fallback("CAOSDB_SERVER_GRPC_PORT_HTTPS", "8443"); auto port = std::stoi(port_str); const auto *const host = - caosdb::utility::get_env_fallback("CAOSDB_SERVER_HOST", "localhost"); + caosdb::utility::get_env_fallback("CAOSDB_SERVER_HOST", "localhost"); const auto path = - caosdb::utility::get_env_fallback("CAOSDB_SERVER_CERT", std::string()); + caosdb::utility::get_env_fallback("CAOSDB_SERVER_CERT", std::string()); auto cert = PemFileCertificateProvider(path); auto config = TlsConnectionConfiguration(host, port, cert); @@ -93,13 +93,13 @@ TEST(test_connection, connection_ssl_authentication_error_anonymous) { } TEST(test_connection, connection_ssl_authentication_error_wrong_credentials) { - const auto *port_str = caosdb::utility::get_env_fallback( - "CAOSDB_SERVER_GRPC_PORT_HTTPS", "8443"); + const auto *port_str = + caosdb::utility::get_env_fallback("CAOSDB_SERVER_GRPC_PORT_HTTPS", "8443"); auto port = std::stoi(port_str); const auto *const host = - caosdb::utility::get_env_fallback("CAOSDB_SERVER_HOST", "localhost"); + caosdb::utility::get_env_fallback("CAOSDB_SERVER_HOST", "localhost"); const auto path = - caosdb::utility::get_env_fallback("CAOSDB_SERVER_CERT", std::string()); + caosdb::utility::get_env_fallback("CAOSDB_SERVER_CERT", std::string()); const auto *const user = "not-a-user-23461237"; const auto *const password = "very-c-cred"; @@ -109,10 +109,10 @@ TEST(test_connection, connection_ssl_authentication_error_wrong_credentials) { auto connection = Connection(config); EXPECT_THROW_MESSAGE( - connection.RetrieveVersionInfo(), AuthenticationError, - "The attempt to execute this transaction has not been executed at all " - "because the authentication did not succeed. Original error: " - "Authentication failed. Username or password wrong."); + connection.RetrieveVersionInfo(), AuthenticationError, + "The attempt to execute this transaction has not been executed at all " + "because the authentication did not succeed. Original error: " + "Authentication failed. Username or password wrong."); } TEST(test_connection, connection_ssl_authentication_success) { @@ -121,7 +121,7 @@ TEST(test_connection, connection_ssl_authentication_success) { auto major = caosdb::COMPATIBLE_SERVER_VERSION_MAJOR; auto minor = caosdb::COMPATIBLE_SERVER_VERSION_MINOR; const auto pre_release = - std::string(caosdb::COMPATIBLE_SERVER_VERSION_PRE_RELEASE); + std::string(caosdb::COMPATIBLE_SERVER_VERSION_PRE_RELEASE); const auto &v_info = connection->RetrieveVersionInfo(); EXPECT_EQ(major, v_info.GetMajor()); diff --git a/test/test_list_properties.cpp b/test/test_list_properties.cpp index ace6a93355761a53b92d7c93df8b115511acda36..825ea24c1e163bb5284e03b406ef9ec19ecc3e17 100644 --- a/test/test_list_properties.cpp +++ b/test/test_list_properties.cpp @@ -42,7 +42,7 @@ protected: static void DeleteEntities() { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); auto query_transaction(connection->CreateTransaction()); query_transaction->Query("FIND ENTITY WITH id > 99"); query_transaction->Execute(); @@ -58,7 +58,7 @@ protected: TEST_F(test_list_properties, insert_list_of_text) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); auto insertion_prop(connection->CreateTransaction()); @@ -67,7 +67,7 @@ TEST_F(test_list_properties, insert_list_of_text) { abstract_list_property.SetName("TestProp"); abstract_list_property.SetDataType(DataType::ListOf(AtomicDataType::TEXT)); abstract_list_property.SetValue( - std::vector<std::string>{"item1", "item2", "item3"}); + std::vector<std::string>{"item1", "item2", "item3"}); insertion_prop->InsertEntity(&abstract_list_property); std::cout << "response " << insertion_prop->ResponseToString(); @@ -110,7 +110,7 @@ TEST_F(test_list_properties, insert_list_of_text) { EXPECT_TRUE(value.IsList()); EXPECT_EQ(value.AsList().size(), 3); EXPECT_TRUE(value.AsList().at(1).IsString()); - EXPECT_EQ(value.AsList().at(1).AsString(), "item6"); + EXPECT_EQ(value.AsList().at(1).AsString(), "item5"); } } // namespace caosdb::entity diff --git a/test/test_properties.cpp b/test/test_properties.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6137494905b5fe0e5c04aa256a45648f355a8b91 --- /dev/null +++ b/test/test_properties.cpp @@ -0,0 +1,106 @@ +/* + * This file is a part of the CaosDB Project. + * + * Copyright (C) 2021 Timm Fitschen <t.fitschen@indiscale.com> + * Copyright (C) 2021 IndiScale GmbH <info@indiscale.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + */ +#include "caosdb/connection.h" // for Connection, ConnectionManager +#include "caosdb/data_type.h" // for AtomicDataType, AtomicDataTyp... +#include "caosdb/entity.h" // for Entity, Properties, Property +#include "caosdb/transaction.h" // for Transaction, ResultSet, Resul... +#include "caosdb/transaction_status.h" // for TransactionStatus +#include <gtest/gtest-message.h> // for Message +#include <gtest/gtest-test-part.h> // for TestPartResult, SuiteApiResolver +#include <gtest/gtest_pred_impl.h> // for AssertionResult, EXPECT_EQ +#include <memory> // for unique_ptr, allocator, __shar... + +namespace caosdb::entity { + +class test_properties : public ::testing::Test { +protected: + void SetUp() override { DeleteEntities(); } + + void TearDown() override { DeleteEntities(); } + + static void DeleteEntities() { + const auto &connection = + caosdb::connection::ConnectionManager::GetDefaultConnection(); + auto query_transaction(connection->CreateTransaction()); + query_transaction->Query("FIND ENTITY WITH id > 99"); + query_transaction->Execute(); + if (query_transaction->GetResultSet().size() > 0) { + auto delete_transaction(connection->CreateTransaction()); + for (const Entity &entity : query_transaction->GetResultSet()) { + delete_transaction->DeleteById(entity.GetId()); + } + delete_transaction->Execute(); + } + } +}; + +TEST_F(test_properties, retrieve_unit) { + const auto &connection = + caosdb::connection::ConnectionManager::GetDefaultConnection(); + + auto insertion_prop(connection->CreateTransaction()); + + Entity abstract_property; + abstract_property.SetRole(Role::PROPERTY); + abstract_property.SetName("TestProp"); + abstract_property.SetDataType(AtomicDataType::DOUBLE); + abstract_property.SetUnit("V"); + + insertion_prop->InsertEntity(&abstract_property); + insertion_prop->Execute(); + EXPECT_TRUE(insertion_prop->GetStatus().IsTerminated()); + + auto insertion_rt(connection->CreateTransaction()); + + Property property; + property.SetId(insertion_prop->GetResultSet().at(0).GetId()); + + Entity entity; + entity.SetRole(Role::RECORD_TYPE); + entity.SetName("TestRT"); + entity.AppendProperty(property); + + insertion_rt->InsertEntity(&entity); + insertion_rt->Execute(); + EXPECT_TRUE(insertion_rt->GetStatus().IsTerminated()); + EXPECT_FALSE(insertion_rt->GetStatus().IsError()); + + // retrieve and check again + auto retrieval(connection->CreateTransaction()); + retrieval->RetrieveById(insertion_prop->GetResultSet().at(0).GetId()); + retrieval->RetrieveById(insertion_rt->GetResultSet().at(0).GetId()); + retrieval->ExecuteAsynchronously(); + retrieval->WaitForIt(); + + EXPECT_TRUE(retrieval->GetStatus().IsTerminated()); + EXPECT_FALSE(retrieval->GetStatus().IsError()); + + const auto &same_property = retrieval->GetResultSet().at(0); + EXPECT_EQ(same_property.GetDataType().AsAtomic(), AtomicDataType::DOUBLE); + EXPECT_EQ(same_property.GetUnit(), "V"); + + const auto &same_record_type = retrieval->GetResultSet().at(1); + EXPECT_EQ(same_record_type.GetProperties().at(0).GetDataType().AsAtomic(), + AtomicDataType::DOUBLE); + EXPECT_EQ(same_record_type.GetProperties().at(0).GetUnit(), "V"); +} + +} // namespace caosdb::entity diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp index 64b6d8ad129acf3bcb2935fdd1a46dcfc6fdbd1d..9e744ff3e7b9910a7a89421b96ab907a48c2d0fb 100644 --- a/test/test_transaction.cpp +++ b/test/test_transaction.cpp @@ -18,26 +18,30 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ -#include "caosdb/connection.h" // for Connection, ConnectionManager -#include "caosdb/data_type.h" // for AtomicDataType -#include "caosdb/entity.h" // for Entity, Messages, Message -#include "caosdb/file_transmission/file_reader.h" // for FileReader +#include "caosdb/connection.h" // for Connection, Connec... +#include "caosdb/data_type.h" // for AtomicDataType +#include "caosdb/entity.h" // for Entity, Property +#include "caosdb/file_transmission/file_reader.h" // for path, FileReader #include "caosdb/file_transmission/file_writer.h" // for FileWriter -#include "caosdb/message_code.h" // for ENTITY_DOES_NOT_EXIST, Messag... -#include "caosdb/status_code.h" // for SUCCESS, StatusCode -#include "caosdb/transaction.h" // for Entity, Transaction,... -#include "caosdb/transaction_status.h" // for TransactionStatus, StatusCode -#include <boost/filesystem/operations.hpp> // for remove -#include <boost/filesystem/path.hpp> // for path -#include <boost/filesystem/path_traits.hpp> // for filesystem -#include <boost/lexical_cast.hpp> -#include <gtest/gtest-message.h> // for Message -#include <gtest/gtest-test-part.h> // for TestPartResult, SuiteApiResolver -#include <gtest/gtest_pred_impl.h> // for Test, EXPECT_EQ, AssertionResult -#include <iostream> -#include <memory> // for unique_ptr, allocator, __shar... -#include <string> // for string -#include <vector> // for vector +#include "caosdb/message_code.h" // for MessageCode, ENTIT... +#include "caosdb/status_code.h" // for StatusCode, SUCCESS +#include "caosdb/transaction.h" // for Entity, Transaction +#include "caosdb/transaction_status.h" // for TransactionStatus +#include "caosdb/value.h" // for Value +#include <gtest/gtest-message.h> // for Message +#include <gtest/gtest-test-part.h> // for TestPartResult +#include <gtest/gtest_pred_impl.h> // for AssertionResult +#include <stddef.h> // for size_t +#include <boost/filesystem/operations.hpp> // for remove +#include <boost/filesystem/path.hpp> // for path +#include <boost/filesystem/path_traits.hpp> // for filesystem +#include <cstdint> // for int32_t +#include <iostream> // for operator<<, endl +#include <limits> // for numeric_limits +#include <memory> // for unique_ptr, allocator +#include <stdexcept> // for logic_error +#include <string> // for string, operator+ +#include <vector> // for vector, operator!= namespace fs = boost::filesystem; namespace caosdb::transaction { @@ -60,11 +64,14 @@ public: */ template <typename T> static auto generateValues() -> std::vector<T> { std::vector<T> values = { - 0, 1, - // (T)6.91629132943846e-310, - std::numeric_limits<T>::max(), std::numeric_limits<T>::min(), - std::numeric_limits<T>::denorm_min(), std::numeric_limits<T>::lowest(), - std::numeric_limits<T>::epsilon() // 0 for integers, but who cares? + static_cast<T>(0), + static_cast<T>(1), + static_cast<T>(6.91629132943846e-310), + std::numeric_limits<T>::max(), + std::numeric_limits<T>::min(), + std::numeric_limits<T>::denorm_min(), + std::numeric_limits<T>::lowest(), + std::numeric_limits<T>::epsilon() // 0 for integers, but who cares? }; return values; @@ -76,7 +83,7 @@ public: static void DeleteEntities() { // delete all entities const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); auto query_transaction(connection->CreateTransaction()); query_transaction->Query("FIND ENTITY WITH id > 99"); query_transaction->Execute(); @@ -130,6 +137,11 @@ auto test_transaction::getValueAs<int32_t>(const Value &value) -> int32_t { return value.AsInteger(); } +template <> +auto test_transaction::getValueAs<bool>(const Value &value) -> bool { + return value.AsBool(); +} + /* * Test the retrieval of a non-existing entity * @@ -138,7 +150,7 @@ auto test_transaction::getValueAs<int32_t>(const Value &value) -> int32_t { */ TEST_F(test_transaction, retrieve_non_existing) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); auto transaction(connection->CreateTransaction()); @@ -168,7 +180,7 @@ TEST_F(test_transaction, retrieve_non_existing) { */ TEST_F(test_transaction, insert_without_delete) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); auto insert_transaction(connection->CreateTransaction()); @@ -203,7 +215,7 @@ TEST_F(test_transaction, insert_delete) { // same as in insert_without_delete // until marked END SAME const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); auto insert_transaction(connection->CreateTransaction()); @@ -248,7 +260,7 @@ TEST_F(test_transaction, insert_delete_with_parent) { // same as in insert_without_delete // until marked END SAME const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); auto insert_transaction(connection->CreateTransaction()); @@ -343,7 +355,7 @@ TEST_F(test_transaction, insert_delete_with_parent) { */ TEST_F(test_transaction, insert_delete_with_property) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); // Create and insert Text property Entity prop_ent; @@ -537,7 +549,7 @@ TEST_F(test_transaction, insert_delete_with_property) { */ TEST_F(test_transaction, test_multi_retrieve) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); auto transaction(connection->CreateTransaction()); @@ -571,7 +583,7 @@ TEST_F(test_transaction, test_multi_retrieve) { */ TEST_F(test_transaction, insert_update_delete) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); // INSERT auto insert_transaction(connection->CreateTransaction()); @@ -639,7 +651,7 @@ TEST_F(test_transaction, insert_update_delete) { */ TEST_F(test_transaction, test_query) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); auto insert_transaction(connection->CreateTransaction()); @@ -685,7 +697,7 @@ TEST_F(test_transaction, test_query) { template <typename T> auto test_numeric_values_impl(AtomicDataType a_type) -> void { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); // Insert entities auto values_orig = test_transaction::generateValues<T>(); @@ -728,7 +740,7 @@ auto test_numeric_values_impl(AtomicDataType a_type) -> void { const auto result = retrieve_transaction->GetResultSet().at(0); EXPECT_EQ(result.GetDataType(), a_type); const auto &retrieved_value = - test_transaction::getValueAs<T>(result.GetValue()); + test_transaction::getValueAs<T>(result.GetValue()); // std::cout << "retrieved_value: " << retrieved_value << std::endl; EXPECT_EQ(retrieved_value, value); ++i; @@ -742,6 +754,8 @@ TEST_F(test_transaction, test_numeric_values) { test_numeric_values_impl<double>(AtomicDataType::DOUBLE); test_transaction::DeleteEntities(); test_numeric_values_impl<int32_t>(AtomicDataType::INTEGER); + test_transaction::DeleteEntities(); + test_numeric_values_impl<bool>(AtomicDataType::BOOLEAN); } // /* @@ -767,7 +781,7 @@ TEST_F(test_transaction, test_numeric_values) { */ TEST_F(test_transaction, test_query_with_retrieve) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); // rt1 Entity rt1; @@ -882,7 +896,7 @@ TEST_F(test_transaction, test_query_with_retrieve) { */ TEST_F(test_transaction, test_file_upload) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); Entity file; file.SetRole(Role::FILE); @@ -919,7 +933,7 @@ TEST_F(test_transaction, test_file_upload) { */ TEST_F(test_transaction, test_file_up_n_download) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); Entity file; file.SetRole(Role::FILE); @@ -938,7 +952,7 @@ TEST_F(test_transaction, test_file_up_n_download) { auto download_transaction(connection->CreateTransaction()); download_transaction->RetrieveAndDownloadFileById( - inserted_file.GetId(), test_download_file_1.string()); + inserted_file.GetId(), test_download_file_1.string()); download_transaction->ExecuteAsynchronously(); ASSERT_EQ(download_transaction->WaitForIt().GetCode(), StatusCode::SUCCESS); @@ -965,7 +979,7 @@ TEST_F(test_transaction, test_file_up_n_download) { */ TEST_F(test_transaction, test_full_workflow) { const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + caosdb::connection::ConnectionManager::GetDefaultConnection(); // ###### Create Data Model ###### Entity dataRT;