From 14337cf5b302c5385f0ae1393caf6df7e83fc539 Mon Sep 17 00:00:00 2001
From: znone <glyc@sina.com.cn>
Date: Sat, 07 Dec 2019 06:52:19 +0000
Subject: [PATCH] 1. 允许绑定字段到std::optional和std::any 2. 增加函数bind_fields可以一次绑定到多个字段 3. 查询函数返回数据库对象自身,以支持链式调用
---
test/TestSqlite.cpp | 60 ++++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 38 insertions(+), 22 deletions(-)
diff --git a/test/TestSqlite.cpp b/test/TestSqlite.cpp
index c349ad1..edf6c96 100644
--- a/test/TestSqlite.cpp
+++ b/test/TestSqlite.cpp
@@ -32,9 +32,7 @@
template<>
inline void bind_record<qtl::sqlite::statement, TestSqliteRecord>(qtl::sqlite::statement& command, TestSqliteRecord&& v)
{
- qtl::bind_field(command, 0, v.id);
- qtl::bind_field(command, 1, v.name);
- qtl::bind_field(command, 2, v.create_time);
+ qtl::bind_fields(command, v.id, v.name, v.create_time);
}
}
@@ -50,10 +48,12 @@
TEST_ADD(TestSqlite::test_iterator)
TEST_ADD(TestSqlite::test_insert_blob)
TEST_ADD(TestSqlite::test_select_blob)
+ TEST_ADD(TestSqlite::test_any)
}
-inline void TestSqlite::connect(qtl::sqlite::database& db)
+inline qtl::sqlite::database TestSqlite::connect()
{
+ qtl::sqlite::database db;
try
{
db.open("test.db");
@@ -62,12 +62,12 @@
{
ASSERT_EXCEPTION(e);
}
+ return db;
}
void TestSqlite::test_dual()
{
- qtl::sqlite::database db;
- connect(db);
+ qtl::sqlite::database db = connect();
try
{
@@ -85,8 +85,7 @@
void TestSqlite::test_clear()
{
- qtl::sqlite::database db;
- connect(db);
+ qtl::sqlite::database db = connect();
try
{
@@ -100,8 +99,7 @@
void TestSqlite::test_insert()
{
- qtl::sqlite::database db;
- connect(db);
+ qtl::sqlite::database db = connect();
try
{
@@ -117,8 +115,7 @@
void TestSqlite::test_insert2()
{
- qtl::sqlite::database db;
- connect(db);
+ qtl::sqlite::database db = connect();
try
{
@@ -135,8 +132,7 @@
void TestSqlite::test_update()
{
- qtl::sqlite::database db;
- connect(db);
+ qtl::sqlite::database db = connect();
try
{
@@ -152,8 +148,7 @@
void TestSqlite::test_query()
{
- qtl::sqlite::database db;
- connect(db);
+ qtl::sqlite::database db = connect();
try
{
@@ -181,8 +176,7 @@
void TestSqlite::test_iterator()
{
- qtl::sqlite::database db;
- connect(db);
+ qtl::sqlite::database db = connect();
try
{
@@ -201,8 +195,7 @@
void TestSqlite::test_insert_blob()
{
- qtl::sqlite::database db;
- connect(db);
+ qtl::sqlite::database db = connect();
try
{
@@ -235,8 +228,7 @@
void TestSqlite::test_select_blob()
{
- qtl::sqlite::database db;
- connect(db);
+ qtl::sqlite::database db = connect();
try
{
@@ -260,6 +252,30 @@
}
}
+void TestSqlite::test_any()
+{
+#ifdef _QTL_ENABLE_CPP17
+ qtl::sqlite::database db = connect();
+
+ try
+ {
+ db.query("select 0, 'hello world'",
+ [](const std::any& i, const std::any& str) {
+ cout << "0=\"" << std::any_cast<int64_t>(i) << "\", 'hello world'=\"" <<
+ std::any_cast<const std::string_view&>(str).data() << "\" \n";
+ });
+ }
+ catch (qtl::sqlite::error& e)
+ {
+ ASSERT_EXCEPTION(e);
+ }
+ catch (std::bad_cast& e)
+ {
+ ASSERT_EXCEPTION(e);
+ }
+#endif // C++17
+}
+
void TestSqlite::get_md5(std::string& str, unsigned char* result)
{
MD5_CTX context;
--
Gitblit v1.9.3