/** * @file VariadicBind_test.cpp * @ingroup tests * @brief Test of variadic bind * * Copyright (c) 2019 Maximilian Bachmann (github@maxbachmann) * Copyright (c) 2019 Sebastien Rombauts (sebastien.rombauts@gmail.com) * * Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt * or copy at http://opensource.org/licenses/MIT) */ #include #include #include #include #include #if (__cplusplus >= 201402L) || ( defined(_MSC_VER) && (_MSC_VER >= 1900) ) // c++14: Visual Studio 2015 TEST(ExecuteMany, invalid) { // Create a new database SQLite::Database db(":memory:", SQLite::OPEN_READWRITE|SQLite::OPEN_CREATE); EXPECT_EQ(0, db.exec("DROP TABLE IF EXISTS test")); EXPECT_EQ(0, db.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, value TEXT DEFAULT 'default')")); EXPECT_TRUE(db.tableExists("test")); { execute_many(db, "INSERT INTO test VALUES (?, ?)", std::make_tuple(1), std::make_tuple(2, "two"), std::make_tuple(3, "three") ); } // make sure the content is as expected { SQLite::Statement query(db, std::string{"SELECT id, value FROM test ORDER BY id"}); std::vector > results; while (query.executeStep()) { const int id = query.getColumn(0); std::string value = query.getColumn(1); results.emplace_back( id, std::move(value) ); } EXPECT_EQ(std::size_t(3), results.size()); EXPECT_EQ(std::make_pair(1,std::string{""}), results.at(0)); EXPECT_EQ(std::make_pair(2,std::string{"two"}), results.at(1)); EXPECT_EQ(std::make_pair(3,std::string{"three"}), results.at(2)); } } #endif // c++14