From de0a88e45b7c7cc53e6eadeb2284c21047c1619c Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Wed, 2 Oct 2024 14:36:02 -0500 Subject: [PATCH] [Unit Test] SQLite mini-ORM unit tests and cleanup #14 --- .../repertory_test/src/database_test.cpp | 68 ++++++++++++++++++ repertory/repertory_test/test_config/test.db3 | Bin 8192 -> 16384 bytes 2 files changed, 68 insertions(+) diff --git a/repertory/repertory_test/src/database_test.cpp b/repertory/repertory_test/src/database_test.cpp index 9102e29d..52a7d636 100644 --- a/repertory/repertory_test/src/database_test.cpp +++ b/repertory/repertory_test/src/database_test.cpp @@ -269,4 +269,72 @@ TEST_F(database_test, insert_update_delete) { EXPECT_EQ(std::size_t(0U), row_count); } } + +TEST_F(database_test, insert_or_replace_and_delete) { + { + auto query = db::db_insert{*db3.get(), "table"} + .column_value("column1", "test0") + .column_value("column2", "test1"); + auto res = query.go(); + EXPECT_TRUE(res.ok()); + } + + { + auto query = db::db_insert{*db3.get(), "table"} + .or_replace() + .column_value("column1", "test0") + .column_value("column2", "moose"); + auto res = query.go(); + EXPECT_TRUE(res.ok()); + } + + { + auto query = db::db_select{*db3.get(), "table"}; + auto res = query.go(); + EXPECT_TRUE(res.ok()); + EXPECT_TRUE(res.has_row()); + + std::size_t row_count{}; + while (res.has_row()) { + std::optional row; + EXPECT_TRUE(res.get_row(row)); + EXPECT_TRUE(row.has_value()); + if (row.has_value()) { + auto columns = row.value().get_columns(); + EXPECT_EQ(std::size_t(2U), columns.size()); + EXPECT_STREQ("column1", columns[0U].get_name().c_str()); + EXPECT_STREQ("test0", columns[0U].get_value().c_str()); + EXPECT_STREQ("column2", columns[1U].get_name().c_str()); + EXPECT_STREQ("moose", columns[1U].get_value().c_str()); + for (auto &&column : columns) { + std::cout << column.get_index() << ':'; + std::cout << column.get_name() << ':'; + std::cout << column.get_value() << std::endl; + } + } + ++row_count; + } + + EXPECT_EQ(std::size_t(1U), row_count); + } + + { + auto query = db::db_delete{*db3.get(), "table"}; + auto res = query.go(); + EXPECT_TRUE(res.ok()); + } + + { + auto query = db::db_select{*db3.get(), "table"}; + auto res = query.go(); + EXPECT_TRUE(res.ok()); + + std::size_t row_count{}; + while (res.has_row()) { + ++row_count; + } + + EXPECT_EQ(std::size_t(0U), row_count); + } +} } // namespace repertory diff --git a/repertory/repertory_test/test_config/test.db3 b/repertory/repertory_test/test_config/test.db3 index 6dc34781fa8ab86b4f1a5de0eed281c8e4cd88fe..99dc1f27c2440881245a59f27a56500d2f53817d 100644 GIT binary patch delta 342 zcmZp0XlP)ZAT7wmz`(!)#LPg<2*j)tb&Q3X81&L!@$wrpF!7yb;5*9?gc}Q^`8ZRU z*~P`h85`9n@8>tFR|p95^mPo1RPc6<{2r3xJHC%E)oy`03{?3