Add testcases about query-builder
authorsangwan.kwon <sangwan.kwon@samsung.com>
Thu, 18 Jan 2018 07:24:42 +0000 (16:24 +0900)
committerJaemin Ryu <jm77.ryu@samsung.com>
Mon, 11 Feb 2019 04:22:16 +0000 (13:22 +0900)
Change-Id: Ia93a3509e3def9a3059d99079fc2c688fd807dc5
Signed-off-by: sangwan.kwon <sangwan.kwon@samsung.com>
include/klay/db/query-builder/test-main.cpp [deleted file]
test/CMakeLists.txt
test/query-builder.cpp [new file with mode: 0644]

diff --git a/include/klay/db/query-builder/test-main.cpp b/include/klay/db/query-builder/test-main.cpp
deleted file mode 100644 (file)
index ee13df2..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#include "table.hxx"
-#include "column.hxx"
-#include "expression.hxx"
-
-#include <iostream>
-
-using namespace qxx;
-
-struct Admin {
-       int id;
-       std::string pkg;
-       int uid;
-       std::string key;
-       int removable;
-};
-
-int main() {
-       auto admin = make_table("admin", make_column("id", &Admin::id),
-                                                                        make_column("pkg", &Admin::pkg),
-                                                                        make_column("uid", &Admin::uid),
-                                                                        make_column("key", &Admin::key),
-                                                                        make_column("removable", &Admin::removable));
-
-       std::string select1 = admin.select(&Admin::id, &Admin::pkg, &Admin::uid, &Admin::key);
-       std::string select2 = admin.select(&Admin::id, &Admin::uid, &Admin::key);
-       std::string select3 = admin.select(&Admin::uid, &Admin::key)
-                                                          .where(expr(&Admin::id) > 3);
-       std::string select4 = admin.selectAll().where(expr(&Admin::uid) > 3);
-       std::string select5 = admin.selectAll().where(expr(&Admin::uid) > 3 &&
-                                                                                                 expr(&Admin::pkg) == "dpm");
-       std::string select6 = admin.selectAll().where(expr(&Admin::uid) > 3 ||
-                                                                                                 expr(&Admin::pkg) == "dpm");
-       std::string select7 = admin.select(distinct(&Admin::uid, &Admin::key))
-                                                          .where(expr(&Admin::id) > 3);
-
-       std::cout << select1 << '\n'; // SELECT id pkg uid key FROM admin
-       std::cout << select2 << '\n'; // SELECT id uid key FROM admin
-       std::cout << select3 << '\n'; // SELECT uid key FROM admin WHERE id = ? 
-       std::cout << select4 << '\n'; // SELECT * FROM admin WHERE uid = ?
-       std::cout << select5 << '\n'; // SELECT * FROM admin WHERE uid = ? AND pkg = ?
-       std::cout << select6 << '\n'; // SELECT * FROM admin WHERE uid = ? OR pkg = ?
-       std::cout << select7 << '\n'; // SELECT DISTINCT uid key FROM admin WHERE id = ?
-
-       int uid = 0, id = 1;
-       std::string update1 = admin.update(&Admin::id, &Admin::pkg, &Admin::uid, &Admin::key);
-       std::string update2 = admin.update(&Admin::key).where(expr(&Admin::uid) == uid &&
-                                                                                                                 expr(&Admin::id) == id);
-       std::string update3 = admin.update(&Admin::key, &Admin::pkg)
-                                                          .where(expr(&Admin::uid) == 0 && expr(&Admin::id) == 1);
-       std::cout << update1 << '\n'; // UPDATE admin SET id = ? pkg = ? uid = ? key = ?
-       std::cout << update2 << '\n'; // UPDATE admin SET key = ?  WHERE uid = ? AND id = ?
-       std::cout << update3 << '\n'; // UPDATE admin SET key = ?  WHERE uid = ? AND id = ?
-
-       std::string delete1 = admin.remove();
-       std::string delete2 = admin.where(expr(&Admin::pkg) == "dpm" && expr(&Admin::uid) == 3);
-       std::cout << delete1 << '\n'; // DELETE FROM admin
-       std::cout << delete2 << '\n'; // DELETE FROM admin WHERE pkg = ? AND uid = ?
-
-       std::string insert1 = admin.insert(&Admin::id, &Admin::pkg, &Admin::uid, &Admin::key);
-       std::string insert2 = admin.insert(&Admin::id, &Admin::pkg, &Admin::key);
-       std::cout << insert1 << '\n'; // INSERT INTO admin (id, pkg, uid, key) VALUES (?, ?, ?, ?)
-       std::cout << insert2 << '\n'; // INSERT INTO admin (id, pkg, key) VALUES (?, ?, ?)
-
-       return 0;
-}
index 39414e847e1fdff68b2472a9334cc76c40bdec95..4e13e85d1ad35e3eda4ccda5ed9ecc9d42371d7b 100755 (executable)
@@ -25,6 +25,7 @@ SET(TEST_SRC  main.cpp
                                logger.cpp
                                eventfd.cpp
                                database.cpp
+                               query-builder.cpp
                                filesystem.cpp
 )
 
diff --git a/test/query-builder.cpp b/test/query-builder.cpp
new file mode 100644 (file)
index 0000000..75639be
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ *  Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License
+ */
+
+#include <klay/exception.h>
+#include <klay/db/query-builder.h>
+
+#include <klay/testbench.h>
+
+#include <iostream>
+
+using namespace query_builder;
+
+struct Admin {
+       int id;
+       std::string pkg;
+       int uid;
+       std::string key;
+       int removable;
+};
+
+auto admin = make_table("admin", make_column("id", &Admin::id),
+                                                                make_column("pkg", &Admin::pkg),
+                                                                make_column("uid", &Admin::uid),
+                                                                make_column("key", &Admin::key),
+                                                                make_column("removable", &Admin::removable));
+
+TESTCASE(SELECT)
+{
+       std::string select1 = admin.select(&Admin::id, &Admin::pkg, &Admin::uid, &Admin::key);
+       std::string select2 = admin.select(&Admin::id, &Admin::uid, &Admin::key);
+
+       TEST_EXPECT(true, select1 == "SELECT id pkg uid key FROM admin");
+       TEST_EXPECT(true, select2 == "SELECT id uid key FROM admin");
+}
+
+TESTCASE(SELECT_ALL)
+{
+       std::string select = admin.selectAll();
+
+       TEST_EXPECT(true, select == "SELECT * FROM admin");
+}
+
+TESTCASE(SELECT_WHERE)
+{
+       std::string select1 = admin.select(&Admin::uid, &Admin::key)
+                                                          .where(expr(&Admin::id) > 3);
+       std::string select2 = admin.selectAll().where(expr(&Admin::uid) > 3);
+       std::string select3 = admin.selectAll().where(expr(&Admin::uid) > 3 &&
+                                                                                                 expr(&Admin::pkg) == "dpm");
+       std::string select4 = admin.selectAll().where(expr(&Admin::uid) > 3 ||
+                                                                                                 expr(&Admin::pkg) == "dpm");
+
+       TEST_EXPECT(true, select1 == "SELECT uid key FROM admin WHERE id > ?");
+       TEST_EXPECT(true, select2 == "SELECT * FROM admin WHERE uid > ?");
+       TEST_EXPECT(true, select3 == "SELECT * FROM admin WHERE uid > ? AND pkg = ?");
+       TEST_EXPECT(true, select4 == "SELECT * FROM admin WHERE uid > ? OR pkg = ?");
+}
+
+TESTCASE(SELECT_DISTINCT)
+{
+       std::string select = admin.select(distinct(&Admin::uid, &Admin::key))
+                                                          .where(expr(&Admin::id) > 3);
+
+       TEST_EXPECT(true, select == "SELECT DISTINCT uid key FROM admin WHERE id > ?");
+}
+
+TESTCASE(UPDATE)
+{
+       int uid = 0, id = 1;
+       std::string update1 = admin.update(&Admin::id, &Admin::pkg, &Admin::uid, &Admin::key);
+       std::string update2 = admin.update(&Admin::key).where(expr(&Admin::uid) == uid &&
+                                                                                                                 expr(&Admin::id) == id);
+       std::string update3 = admin.update(&Admin::key, &Admin::pkg)
+                                                          .where(expr(&Admin::uid) == 0 && expr(&Admin::id) == 1);
+
+       TEST_EXPECT(true, update1 == "UPDATE admin SET id = ? pkg = ? uid = ? key = ?");
+       TEST_EXPECT(true, update2 == "UPDATE admin SET key = ? WHERE uid = ? AND id = ?");
+       TEST_EXPECT(true, update3 == "UPDATE admin SET key = ? pkg = ? WHERE uid = ? AND id = ?");
+}
+
+TESTCASE(DELETE)
+{
+       std::string delete1 = admin.remove();
+       std::string delete2 = admin.remove().where(expr(&Admin::pkg) == "dpm" &&
+                                                                                          expr(&Admin::uid) == 3);
+
+       TEST_EXPECT(true, delete1 == "DELETE FROM admin");
+       TEST_EXPECT(true, delete2 == "DELETE FROM admin WHERE pkg = ? AND uid = ?");
+}
+
+TESTCASE(INSERT)
+{
+       std::string insert1 = admin.insert(&Admin::id, &Admin::pkg, &Admin::uid, &Admin::key);
+       std::string insert2 = admin.insert(&Admin::id, &Admin::pkg, &Admin::key);
+
+       TEST_EXPECT(true, insert1 == "INSERT INTO admin (id, pkg, uid, key) VALUES (?, ?, ?, ?)");
+       TEST_EXPECT(true, insert2 == "INSERT INTO admin (id, pkg, key) VALUES (?, ?, ?)");
+}