mirror of
https://github.com/boostorg/mysql.git
synced 2026-02-14 00:42:53 +00:00
field_view accessors
This commit is contained in:
@@ -31,6 +31,26 @@ using boost::typeindex::type_index;
|
||||
namespace
|
||||
{
|
||||
|
||||
// For parametrized tests
|
||||
struct
|
||||
{
|
||||
const char* name;
|
||||
field_view field;
|
||||
field_kind expected_kind;
|
||||
bool is_null, is_int64, is_uint64, is_string, is_float, is_double, is_date, is_datetime, is_time;
|
||||
} test_cases [] = {
|
||||
// name field kind null, i64 u64 str float double date dt time
|
||||
{ "null", field_view(), field_kind::null, true, false, false, false, false, false, false, false, false },
|
||||
{ "int64", field_view(42), field_kind::int64, false, true, false, false, false, false, false, false, false },
|
||||
{ "uint64", field_view(42u), field_kind::uint64, false, false, true, false, false, false, false, false, false },
|
||||
{ "string", field_view("test"), field_kind::string, false, false, false, true, false, false, false, false, false },
|
||||
{ "float", field_view(4.2f), field_kind::float_, false, false, false, false, true, false, false, false, false },
|
||||
{ "double", field_view(4.2), field_kind::double_, false, false, false, false, false, true, false, false, false },
|
||||
{ "date", field_view(makedate(2020, 1, 1)), field_kind::date, false, false, false, false, false, false, true, false, false },
|
||||
{ "datetime", field_view(makedt(2020, 1, 1)), field_kind::datetime, false, false, false, false, false, false, false, true, false },
|
||||
{ "time", field_view(maket(20, 1, 1)), field_kind::time, false, false, false, false, false, false, false, false, true },
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(test_field_view)
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(constructors)
|
||||
@@ -165,26 +185,6 @@ BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(accesors)
|
||||
|
||||
// For parametrized tests
|
||||
struct
|
||||
{
|
||||
const char* name;
|
||||
field_view field;
|
||||
field_kind expected_kind;
|
||||
bool is_null, is_int64, is_uint64, is_string, is_float, is_double, is_date, is_datetime, is_time;
|
||||
} test_cases [] = {
|
||||
// name field kind null, i64 u64 str float double date dt time
|
||||
{ "null", field_view(), field_kind::null, true, false, false, false, false, false, false, false, false },
|
||||
{ "int64", field_view(42), field_kind::int64, false, true, false, false, false, false, false, false, false },
|
||||
{ "uint64", field_view(42u), field_kind::uint64, false, false, true, false, false, false, false, false, false },
|
||||
{ "string", field_view("test"), field_kind::string, false, false, false, true, false, false, false, false, false },
|
||||
{ "float", field_view(4.2f), field_kind::float_, false, false, false, false, true, false, false, false, false },
|
||||
{ "double", field_view(4.2), field_kind::double_, false, false, false, false, false, true, false, false, false },
|
||||
{ "date", field_view(makedate(2020, 1, 1)), field_kind::date, false, false, false, false, false, false, true, false, false },
|
||||
{ "datetime", field_view(makedt(2020, 1, 1)), field_kind::datetime, false, false, false, false, false, false, false, true, false },
|
||||
{ "time", field_view(maket(20, 1, 1)), field_kind::time, false, false, false, false, false, false, false, false, true },
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(kind)
|
||||
{
|
||||
for (const auto& tc : test_cases)
|
||||
@@ -310,6 +310,82 @@ BOOST_AUTO_TEST_CASE(as_exceptions)
|
||||
}
|
||||
}
|
||||
|
||||
// Success cases (the type matches the called function)
|
||||
BOOST_AUTO_TEST_CASE(int64)
|
||||
{
|
||||
field_view f (-1);
|
||||
BOOST_TEST_REQUIRE(f.if_int64() != nullptr);
|
||||
BOOST_TEST(*f.if_int64() == -1);
|
||||
BOOST_TEST(f.as_int64() == -1);
|
||||
BOOST_TEST(f.get_int64() == -1);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(uint64)
|
||||
{
|
||||
field_view f (42u);
|
||||
BOOST_TEST_REQUIRE(f.if_uint64() != nullptr);
|
||||
BOOST_TEST(*f.if_uint64() == 42u);
|
||||
BOOST_TEST(f.as_uint64() == 42u);
|
||||
BOOST_TEST(f.get_uint64() == 42u);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(string)
|
||||
{
|
||||
field_view f ("test");
|
||||
BOOST_TEST_REQUIRE(f.if_string() != nullptr);
|
||||
BOOST_TEST(*f.if_string() == "test");
|
||||
BOOST_TEST(f.as_string() == "test");
|
||||
BOOST_TEST(f.get_string() == "test");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(float_)
|
||||
{
|
||||
field_view f (4.2f);
|
||||
BOOST_TEST_REQUIRE(f.if_float() != nullptr);
|
||||
BOOST_TEST(*f.if_float() == 4.2f);
|
||||
BOOST_TEST(f.as_float() == 4.2f);
|
||||
BOOST_TEST(f.get_float() == 4.2f);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(double_)
|
||||
{
|
||||
field_view f (4.2);
|
||||
BOOST_TEST_REQUIRE(f.if_double() != nullptr);
|
||||
BOOST_TEST(*f.if_double() == 4.2);
|
||||
BOOST_TEST(f.as_double() == 4.2);
|
||||
BOOST_TEST(f.get_double() == 4.2);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(date)
|
||||
{
|
||||
auto d = makedate(2020, 1, 2);
|
||||
field_view f (d);
|
||||
BOOST_TEST_REQUIRE(f.if_date() != nullptr);
|
||||
BOOST_TEST(*f.if_date() == d);
|
||||
BOOST_TEST(f.as_date() == d);
|
||||
BOOST_TEST(f.get_date() == d);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(datetime)
|
||||
{
|
||||
auto dt = makedt(2020, 1, 2);
|
||||
field_view f (dt);
|
||||
BOOST_TEST_REQUIRE(f.if_datetime() != nullptr);
|
||||
BOOST_TEST(*f.if_datetime() == dt);
|
||||
BOOST_TEST(f.as_datetime() == dt);
|
||||
BOOST_TEST(f.get_datetime() == dt);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(time)
|
||||
{
|
||||
auto t = maket(2020, 1, 2);
|
||||
field_view f (t);
|
||||
BOOST_TEST_REQUIRE(f.if_time() != nullptr);
|
||||
BOOST_TEST(*f.if_time() == t);
|
||||
BOOST_TEST(f.as_time() == t);
|
||||
BOOST_TEST(f.get_time() == t);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user