diff options
Diffstat (limited to 'test/test-mysql.cpp')
-rw-r--r-- | test/test-mysql.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/test-mysql.cpp b/test/test-mysql.cpp index 5a22567..6baf029 100644 --- a/test/test-mysql.cpp +++ b/test/test-mysql.cpp @@ -1,9 +1,18 @@ #define BOOST_TEST_MODULE MySQL #include <boost/test/unit_test.hpp> +#include <compileTimeFormatter.h> +#include <cstddef> +#include <cstdint> +#include <dbRecordSet.h> +#include <dbStmt.h> #include <dbTypes.h> #include <input/mysqlConn.h> +#include <memory> #include <stdexcept> +#include <string_view> +#include <type_traits> +#include <variant> BOOST_AUTO_TEST_CASE(simple) { @@ -23,3 +32,24 @@ BOOST_AUTO_TEST_CASE(simple) BOOST_CHECK_NO_THROW(c.query("SET @var = ?", {1.2})); BOOST_CHECK_THROW(c.query("SET @var = ?", {MyGrate::Time {}}), std::runtime_error); } + +using SomeSelect = MyGrate::DbStmt<"SELECT * FROM foo">; +using SomeShow = MyGrate::DbStmt<"SHOW MASTER STATUS">; +using SomeUpdate = MyGrate::DbStmt<"UPDATE foo SET blah = ? WHERE bar = ?", MyGrate::ParamMode::QMark>; + +static_assert(std::is_same_v<SomeSelect::Return, MyGrate::RecordSetPtr>); +static_assert(std::is_same_v<SomeShow::Return, MyGrate::RecordSetPtr>); +static_assert(std::is_same_v<SomeUpdate::Return, std::size_t>); +static_assert(SomeShow::paramCount == 0); +static_assert(SomeUpdate::paramCount == 2); + +BOOST_AUTO_TEST_CASE(stmt) +{ + MyGrate::Input::MySQLConn c {"192.168.1.38", "repl", "r3pl", 3306}; + const auto rs {SomeShow::execute(&c)}; + BOOST_REQUIRE(rs); + BOOST_REQUIRE_EQUAL(rs->rows(), 1); + BOOST_REQUIRE_EQUAL(rs->columns(), 4); + BOOST_CHECK(std::get<std::string_view>(rs->at(0, 0)).starts_with("mariadb")); + BOOST_CHECK_GE(std::get<int64_t>(rs->at(0, 1)), 4); +} |