summaryrefslogtreecommitdiffhomepage
path: root/tests/test-compiledsql.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-compiledsql.cpp')
-rw-r--r--tests/test-compiledsql.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/test-compiledsql.cpp b/tests/test-compiledsql.cpp
new file mode 100644
index 0000000..d14220c
--- /dev/null
+++ b/tests/test-compiledsql.cpp
@@ -0,0 +1,77 @@
+#include <gtest/gtest.h>
+
+#include <filesystem>
+#include <memory>
+#include <string>
+#include <system_error>
+
+#include "libreichwein/file.h"
+
+#include "config.h"
+#include "storage.h"
+#include "whiteboard.h"
+
+namespace fs = std::filesystem;
+
+namespace {
+ const std::string testDbFilename{"./whiteboard.db3"};
+}
+
+class CompiledSQLTest: public ::testing::Test
+{
+protected:
+ CompiledSQLTest(){
+ }
+
+ ~CompiledSQLTest() override{
+ }
+
+ void SetUp() override
+ {
+ std::error_code ec;
+ fs::remove(testDbFilename, ec);
+ }
+
+ void TearDown() override
+ {
+ std::error_code ec;
+ fs::remove(testDbFilename, ec);
+ }
+
+};
+
+TEST_F(CompiledSQLTest, create)
+{
+ SQLite::Database db{testDbFilename, SQLite::OPEN_READWRITE | SQLite::OPEN_CREATE};
+
+ {
+ CompiledSQL stmt1{db, "CREATE TABLE documents (id VARCHAR(16) PRIMARY KEY)"};
+ CompiledSQL::Guard g{stmt1};
+ stmt1.execute();
+ }
+
+ {
+ CompiledSQL stmt2{db, "INSERT INTO documents (id) values (?)"};
+ CompiledSQL::Guard g{stmt2};
+ stmt2.bind(1, "abc");
+ ASSERT_TRUE(stmt2.execute());
+ }
+
+ {
+ CompiledSQL stmt3{db, "SELECT id FROM documents WHERE id = ?"};
+ CompiledSQL::Guard g{stmt3};
+ stmt3.bind(1, "abc");
+ ASSERT_TRUE(stmt3.execute());
+ EXPECT_EQ(stmt3.getColumn<std::string>(0), "abc");
+ }
+
+ {
+ CompiledSQL stmt4{db, "SELECT id FROM documents WHERE id = ?"};
+ CompiledSQL::Guard g{stmt4};
+ stmt4.bind(1, "def");
+ ASSERT_FALSE(stmt4.execute());
+ }
+
+ EXPECT_TRUE(fs::exists(testDbFilename));
+}
+