| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | |
| | | 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"); |
| | |
| | | { |
| | | ASSERT_EXCEPTION(e); |
| | | } |
| | | return db; |
| | | } |
| | | |
| | | void TestSqlite::test_dual() |
| | | { |
| | | qtl::sqlite::database db; |
| | | connect(db); |
| | | qtl::sqlite::database db = connect(); |
| | | |
| | | try |
| | | { |
| | |
| | | |
| | | void TestSqlite::test_clear() |
| | | { |
| | | qtl::sqlite::database db; |
| | | connect(db); |
| | | qtl::sqlite::database db = connect(); |
| | | |
| | | try |
| | | { |
| | |
| | | |
| | | void TestSqlite::test_insert() |
| | | { |
| | | qtl::sqlite::database db; |
| | | connect(db); |
| | | qtl::sqlite::database db = connect(); |
| | | |
| | | try |
| | | { |
| | |
| | | |
| | | void TestSqlite::test_insert2() |
| | | { |
| | | qtl::sqlite::database db; |
| | | connect(db); |
| | | qtl::sqlite::database db = connect(); |
| | | |
| | | try |
| | | { |
| | |
| | | |
| | | void TestSqlite::test_update() |
| | | { |
| | | qtl::sqlite::database db; |
| | | connect(db); |
| | | qtl::sqlite::database db = connect(); |
| | | |
| | | try |
| | | { |
| | |
| | | |
| | | void TestSqlite::test_query() |
| | | { |
| | | qtl::sqlite::database db; |
| | | connect(db); |
| | | qtl::sqlite::database db = connect(); |
| | | |
| | | try |
| | | { |
| | |
| | | |
| | | void TestSqlite::test_iterator() |
| | | { |
| | | qtl::sqlite::database db; |
| | | connect(db); |
| | | qtl::sqlite::database db = connect(); |
| | | |
| | | try |
| | | { |
| | |
| | | |
| | | void TestSqlite::test_insert_blob() |
| | | { |
| | | qtl::sqlite::database db; |
| | | connect(db); |
| | | qtl::sqlite::database db = connect(); |
| | | |
| | | try |
| | | { |
| | |
| | | |
| | | void TestSqlite::test_select_blob() |
| | | { |
| | | qtl::sqlite::database db; |
| | | connect(db); |
| | | qtl::sqlite::database db = connect(); |
| | | |
| | | try |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | 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; |