From c2765d5b7b290a366550e5e193e33d660f9eaaab Mon Sep 17 00:00:00 2001 From: ruben Date: Wed, 5 Feb 2020 12:52:21 +0000 Subject: [PATCH] Added tests for statement execute (collection) --- include/mysql/prepared_statement.hpp | 4 ++-- test/integration/execute_statement.cpp | 29 ++++++++++++++++++++------ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/include/mysql/prepared_statement.hpp b/include/mysql/prepared_statement.hpp index 80d5500c..1b681fd3 100644 --- a/include/mysql/prepared_statement.hpp +++ b/include/mysql/prepared_statement.hpp @@ -9,6 +9,8 @@ namespace mysql { +constexpr std::array no_statement_params; + template class prepared_statement { @@ -31,8 +33,6 @@ public: template resultset execute(ForwardIterator params_first, ForwardIterator params_last, error_code&, error_info&) const; - - static constexpr std::array no_params {}; }; } diff --git a/test/integration/execute_statement.cpp b/test/integration/execute_statement.cpp index 46389acb..b44e0bf5 100644 --- a/test/integration/execute_statement.cpp +++ b/test/integration/execute_statement.cpp @@ -46,11 +46,28 @@ TEST_F(ExecuteStatementTest, IteratorsSyncErrc_Error) EXPECT_FALSE(result.valid()); } -// prepared_statement::execute -// OK, no params -// OK, with params -// OK, select, insert, update, delete -// Error, wrong number of parameters -// Collection version +TEST_F(ExecuteStatementTest, CollectionSyncErrc_OkNoParams) +{ + auto stmt = conn.prepare_statement("SELECT * FROM empty_table"); + auto result = stmt.execute(mysql::no_statement_params, errc, info); + validate_no_error(); + EXPECT_TRUE(result.valid()); +} + +TEST_F(ExecuteStatementTest, CollectionSyncErrc_OkWithParams) +{ + auto stmt = conn.prepare_statement("SELECT * FROM empty_table WHERE id IN (?, ?)"); + auto result = stmt.execute(makevalues("item", 42), errc, info); + validate_no_error(); + EXPECT_TRUE(result.valid()); +} + +TEST_F(ExecuteStatementTest, CollectionSyncErrc_Error) +{ + auto stmt = conn.prepare_statement("SELECT * FROM empty_table WHERE id IN (?, ?)"); + auto result = stmt.execute(makevalues("item"), errc, info); + validate_sync_fail(Error::wrong_num_params, {"param", "2", "1", "statement", "execute"}); + EXPECT_FALSE(result.valid()); +} }