mirror of
https://github.com/boostorg/mysql.git
synced 2026-02-14 12:52:17 +00:00
Copy and move assignment tests
This commit is contained in:
@@ -20,15 +20,6 @@ using boost::mysql::make_field_views;
|
||||
using boost::mysql::test::makerow;
|
||||
|
||||
|
||||
// move assignment
|
||||
// empty
|
||||
// non-empty, non-strings
|
||||
// non-empty, with strings (check lifecycle)
|
||||
// non-empty, with empty strings
|
||||
// to empty
|
||||
// to non-empty, with strings
|
||||
// self assignment, empty
|
||||
// self assignment, with strings
|
||||
// at, operator[], size, empty, begin, end: same as row_view
|
||||
// operator row_view
|
||||
// empty
|
||||
@@ -204,16 +195,152 @@ BOOST_AUTO_TEST_CASE(strings_empty_to)
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(copy_assignment)
|
||||
BOOST_AUTO_TEST_CASE(empty)
|
||||
{
|
||||
row r1 = makerow(42, "abcdef");
|
||||
row r2;
|
||||
r1 = r2;
|
||||
r2 = makerow(90, nullptr); // r1 is independent of r2
|
||||
BOOST_TEST(r1.empty());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(non_strings)
|
||||
{
|
||||
row r1 = makerow(42, "abcdef");
|
||||
row r2 = makerow(50.0f, nullptr, 80u);
|
||||
r1 = r2;
|
||||
r2 = makerow("abc", 80, nullptr); // r1 is independent of r2
|
||||
|
||||
BOOST_TEST(r1.size() == 3);
|
||||
BOOST_TEST(r1[0] == field_view(50.0f));
|
||||
BOOST_TEST(r1[1] == field_view());
|
||||
BOOST_TEST(r1[2] == field_view(80u));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(strings)
|
||||
{
|
||||
row r1 = makerow(42, "abcdef");
|
||||
row r2 = makerow("a_very_long_string", nullptr, "");
|
||||
r1 = r2;
|
||||
r2 = makerow("another_string", 90, "yet_another"); // r1 is independent of r2
|
||||
|
||||
BOOST_TEST(r1.size() == 3);
|
||||
BOOST_TEST(r1[0] == field_view("a_very_long_string"));
|
||||
BOOST_TEST(r1[1] == field_view());
|
||||
BOOST_TEST(r1[2] == field_view(""));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(strings_empty_to)
|
||||
{
|
||||
row r1;
|
||||
row r2 = makerow("abc", nullptr, "bcd");
|
||||
r1 = r2;
|
||||
|
||||
BOOST_TEST(r1.size() == 3);
|
||||
BOOST_TEST(r1[0] == field_view("abc"));
|
||||
BOOST_TEST(r1[1] == field_view());
|
||||
BOOST_TEST(r1[2] == field_view("bcd"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(self_assignment_empty)
|
||||
{
|
||||
row r;
|
||||
const row& ref = r;
|
||||
r = ref;
|
||||
|
||||
BOOST_TEST(r.empty());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(self_assignment_non_empty)
|
||||
{
|
||||
row r = makerow("abc", 50u, "fgh");
|
||||
const row& ref = r;
|
||||
r = ref;
|
||||
|
||||
BOOST_TEST(r.size() == 3);
|
||||
BOOST_TEST(r[0] == field_view("abc"));
|
||||
BOOST_TEST(r[1] == field_view(50u));
|
||||
BOOST_TEST(r[2] == field_view("fgh"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(move_assignment)
|
||||
BOOST_AUTO_TEST_CASE(empty)
|
||||
{
|
||||
row r1 = makerow(42, "abcdef");
|
||||
row r2;
|
||||
r1 = std::move(r2);
|
||||
r2 = makerow(90, nullptr); // r1 is independent of r2
|
||||
BOOST_TEST(r1.empty());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(non_strings)
|
||||
{
|
||||
row r1 = makerow(42, "abcdef");
|
||||
row r2 = makerow(50.0f, nullptr, 80u);
|
||||
r1 = std::move(r2);
|
||||
r2 = makerow("abc", 80, nullptr); // r1 is independent of r2
|
||||
|
||||
BOOST_TEST(r1.size() == 3);
|
||||
BOOST_TEST(r1[0] == field_view(50.0f));
|
||||
BOOST_TEST(r1[1] == field_view());
|
||||
BOOST_TEST(r1[2] == field_view(80u));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(strings)
|
||||
{
|
||||
row r1 = makerow(42, "abcdef");
|
||||
row r2 = makerow("a_very_long_string", nullptr, "");
|
||||
r1 = std::move(r2);
|
||||
r2 = makerow("another_string", 90, "yet_another"); // r1 is independent of r2
|
||||
|
||||
BOOST_TEST(r1.size() == 3);
|
||||
BOOST_TEST(r1[0] == field_view("a_very_long_string"));
|
||||
BOOST_TEST(r1[1] == field_view());
|
||||
BOOST_TEST(r1[2] == field_view(""));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(strings_empty_to)
|
||||
{
|
||||
row r1;
|
||||
row r2 = makerow("abc", nullptr, "bcd");
|
||||
r1 = std::move(r2);
|
||||
|
||||
BOOST_TEST(r1.size() == 3);
|
||||
BOOST_TEST(r1[0] == field_view("abc"));
|
||||
BOOST_TEST(r1[1] == field_view());
|
||||
BOOST_TEST(r1[2] == field_view("bcd"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(self_assignment_empty)
|
||||
{
|
||||
row r;
|
||||
row&& ref = std::move(r);
|
||||
r = std::move(ref);
|
||||
|
||||
// r is in a valid but unspecified state; can be assigned to
|
||||
r = makerow("abcdef");
|
||||
BOOST_TEST(r.size() == 1);
|
||||
BOOST_TEST(r[0] == field_view("abcdef"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(self_assignment_non_empty)
|
||||
{
|
||||
row r = makerow("abc", 50u, "fgh");
|
||||
row&& ref = std::move(r);
|
||||
r = std::move(ref); // this should leave r in a valid but unspecified state
|
||||
|
||||
// r is in a valid but unspecified state; can be assigned to
|
||||
r = makerow("abcdef");
|
||||
BOOST_TEST(r.size() == 1);
|
||||
BOOST_TEST(r[0] == field_view("abcdef"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
// copy assignment
|
||||
// empty
|
||||
// non-empty, non-strings
|
||||
// non-empty, with strings (check lifecycle)
|
||||
// non-empty, with empty strings
|
||||
// to empty
|
||||
// to non-empty, with strings
|
||||
// self assignment, empty
|
||||
// self assignment, with strings
|
||||
|
||||
// // Constructors
|
||||
// BOOST_AUTO_TEST_SUITE(constructors)
|
||||
|
||||
Reference in New Issue
Block a user