2
0
mirror of https://github.com/boostorg/mysql.git synced 2026-02-14 12:52:17 +00:00

Field view

This commit is contained in:
Ruben Perez
2022-08-08 17:04:50 +02:00
parent 780b0d19e4
commit 50cd20bb7d
73 changed files with 1087 additions and 1219 deletions

View File

@@ -6,7 +6,7 @@
//
#include <boost/mysql/execute_params.hpp>
#include <boost/mysql/value.hpp>
#include <boost/mysql/field_view.hpp>
#include "test_common.hpp"
#include "assert_type_equals.hpp"
#include <boost/test/unit_test.hpp>
@@ -14,19 +14,19 @@
#include <type_traits>
using boost::mysql::make_execute_params;
using boost::mysql::value;
using boost::mysql::field_view;
using boost::mysql::test::assert_type_equals;
// Make execute_args printable by Boost.Test
namespace boost {
namespace mysql {
template <typename ValueForwardIterator>
std::ostream& boost_test_print_type(std::ostream& os, const execute_params<ValueForwardIterator>& v)
template <typename FieldViewFwdIterator>
std::ostream& boost_test_print_type(std::ostream& os, const execute_params<FieldViewFwdIterator>& v)
{
return os
<< "execute_params<"
<< boost::typeindex::type_id<ValueForwardIterator>().pretty_name()
<< boost::typeindex::type_id<FieldViewFwdIterator>().pretty_name()
<< ">("
<< v.first()
<< ", "
@@ -38,8 +38,8 @@ std::ostream& boost_test_print_type(std::ostream& os, const execute_params<Value
} // boost
// Make Boost.Test ignore list iterators when printing
BOOST_TEST_DONT_PRINT_LOG_VALUE(std::forward_list<value>::iterator)
BOOST_TEST_DONT_PRINT_LOG_VALUE(std::forward_list<value>::const_iterator)
BOOST_TEST_DONT_PRINT_LOG_VALUE(std::forward_list<field_view>::iterator)
BOOST_TEST_DONT_PRINT_LOG_VALUE(std::forward_list<field_view>::const_iterator)
BOOST_AUTO_TEST_SUITE(test_execute_params)
@@ -48,7 +48,7 @@ BOOST_AUTO_TEST_SUITE(test_setters)
BOOST_AUTO_TEST_CASE(set_first)
{
value arr [10];
field_view arr [10];
auto params = make_execute_params(arr);
params.set_first(&arr[1]);
BOOST_TEST(params.first() == &arr[1]);
@@ -57,7 +57,7 @@ BOOST_AUTO_TEST_CASE(set_first)
BOOST_AUTO_TEST_CASE(set_last)
{
value arr [10];
field_view arr [10];
auto params = make_execute_params(arr);
params.set_last(&arr[1]);
BOOST_TEST(params.first() == std::begin(arr));
@@ -71,20 +71,20 @@ BOOST_AUTO_TEST_SUITE(test_make_execute_params_collection)
BOOST_AUTO_TEST_CASE(c_array)
{
value arr [10];
field_view arr [10];
auto params = make_execute_params(arr);
BOOST_TEST(params.first() == std::begin(arr));
BOOST_TEST(params.last() == std::end(arr));
assert_type_equals<decltype(params.first()), const value*>();
assert_type_equals<decltype(params.first()), const field_view*>();
}
BOOST_AUTO_TEST_CASE(forward_list)
{
std::forward_list<value> l { value("a"), value("b") };
std::forward_list<field_view> l { field_view("a"), field_view("b") };
auto params = make_execute_params(l);
BOOST_TEST(params.first() == std::begin(l));
BOOST_TEST(params.last() == std::end(l));
assert_type_equals<decltype(params.first()), std::forward_list<value>::const_iterator>();
assert_type_equals<decltype(params.first()), std::forward_list<field_view>::const_iterator>();
}
BOOST_AUTO_TEST_SUITE_END()
@@ -94,20 +94,20 @@ BOOST_AUTO_TEST_SUITE(test_make_execute_params_range)
BOOST_AUTO_TEST_CASE(c_array)
{
value arr [10];
field_view arr [10];
auto params = make_execute_params(&arr[0], &arr[2]);
BOOST_TEST(params.first() == &arr[0]);
BOOST_TEST(params.last() == &arr[2]);
assert_type_equals<decltype(params.first()), value*>();
assert_type_equals<decltype(params.first()), field_view*>();
}
BOOST_AUTO_TEST_CASE(forward_list)
{
std::forward_list<value> l { value("a"), value("b") };
std::forward_list<field_view> l { field_view("a"), field_view("b") };
auto params = make_execute_params(l.begin(), std::next(l.begin()));
BOOST_TEST(params.first() == l.begin());
BOOST_TEST(params.last() == std::next(l.begin()));
assert_type_equals<decltype(params.first()), std::forward_list<value>::iterator>();
assert_type_equals<decltype(params.first()), std::forward_list<field_view>::iterator>();
}
BOOST_AUTO_TEST_SUITE_END()