From 38b20dd50336437e3903a8319633719cc3420b19 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Thu, 18 Oct 2018 07:18:13 +0300 Subject: [PATCH] Expand get_by_index, get_by_type tests --- test/variant_get_by_index.cpp | 99 +++++++++++++++++++++++++++++++++++ test/variant_get_by_type.cpp | 97 ++++++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+) diff --git a/test/variant_get_by_index.cpp b/test/variant_get_by_index.cpp index 950e73a..2728196 100644 --- a/test/variant_get_by_index.cpp +++ b/test/variant_get_by_index.cpp @@ -58,6 +58,15 @@ int main() BOOST_TEST_EQ( get<0>(std::move(v)), 0 ); } + { + variant const v; + + BOOST_TEST_EQ( get<0>(v), 0 ); + BOOST_TEST_EQ( get_if<0>(&v), &get<0>(v) ); + + BOOST_TEST_EQ( get<0>(std::move(v)), 0 ); + } + { variant v( 1 ); @@ -67,6 +76,15 @@ int main() BOOST_TEST_EQ( get<0>(std::move(v)), 1 ); } + { + variant const v( 1 ); + + BOOST_TEST_EQ( get<0>(v), 1 ); + BOOST_TEST_EQ( get_if<0>(&v), &get<0>(v) ); + + BOOST_TEST_EQ( get<0>(std::move(v)), 1 ); + } + { variant v; @@ -127,6 +145,18 @@ int main() BOOST_TEST_EQ( get<0>(std::move(v)), 0 ); } + { + variant const v; + + BOOST_TEST_EQ( get<0>(v), 0 ); + BOOST_TEST_EQ( get_if<0>(&v), &get<0>(v) ); + + BOOST_TEST_THROWS( get<1>(v), bad_variant_access ); + BOOST_TEST_EQ( get_if<1>(&v), nullptr ); + + BOOST_TEST_EQ( get<0>(std::move(v)), 0 ); + } + { variant v( 1 ); @@ -139,6 +169,18 @@ int main() BOOST_TEST_EQ( get<0>(std::move(v)), 1 ); } + { + variant const v( 1 ); + + BOOST_TEST_EQ( get<0>(v), 1 ); + BOOST_TEST_EQ( get_if<0>(&v), &get<0>(v) ); + + BOOST_TEST_THROWS( get<1>(v), bad_variant_access ); + BOOST_TEST_EQ( get_if<1>(&v), nullptr ); + + BOOST_TEST_EQ( get<0>(std::move(v)), 1 ); + } + { variant v( 3.14f ); @@ -151,6 +193,18 @@ int main() BOOST_TEST_EQ( get<1>(std::move(v)), 3.14f ); } + { + variant const v( 3.14f ); + + BOOST_TEST_THROWS( get<0>(v), bad_variant_access ); + BOOST_TEST_EQ( get_if<0>(&v), nullptr ); + + BOOST_TEST_EQ( get<1>(v), 3.14f ); + BOOST_TEST_EQ( get_if<1>(&v), &get<1>(v) ); + + BOOST_TEST_EQ( get<1>(std::move(v)), 3.14f ); + } + { variant v; @@ -166,6 +220,21 @@ int main() BOOST_TEST_EQ( get<0>(std::move(v)), 0 ); } + { + variant const v; + + BOOST_TEST_EQ( get<0>(v), 0 ); + BOOST_TEST_EQ( get_if<0>(&v), &get<0>(v) ); + + BOOST_TEST_THROWS( get<1>(v), bad_variant_access ); + BOOST_TEST_EQ( get_if<1>(&v), nullptr ); + + BOOST_TEST_THROWS( get<2>(v), bad_variant_access ); + BOOST_TEST_EQ( get_if<2>(&v), nullptr ); + + BOOST_TEST_EQ( get<0>(std::move(v)), 0 ); + } + { variant v( 1 ); @@ -181,6 +250,21 @@ int main() BOOST_TEST_EQ( get<0>(std::move(v)), 1 ); } + { + variant const v( 1 ); + + BOOST_TEST_EQ( get<0>(v), 1 ); + BOOST_TEST_EQ( get_if<0>(&v), &get<0>(v) ); + + BOOST_TEST_THROWS( get<1>(v), bad_variant_access ); + BOOST_TEST_EQ( get_if<1>(&v), nullptr ); + + BOOST_TEST_THROWS( get<2>(v), bad_variant_access ); + BOOST_TEST_EQ( get_if<2>(&v), nullptr ); + + BOOST_TEST_EQ( get<0>(std::move(v)), 1 ); + } + { variant v( 3.14f ); @@ -196,6 +280,21 @@ int main() BOOST_TEST_EQ( get<2>(std::move(v)), 3.14f ); } + { + variant const v( 3.14f ); + + BOOST_TEST_THROWS( get<0>(v), bad_variant_access ); + BOOST_TEST_EQ( get_if<0>(&v), nullptr ); + + BOOST_TEST_THROWS( get<1>(v), bad_variant_access ); + BOOST_TEST_EQ( get_if<1>(&v), nullptr ); + + BOOST_TEST_EQ( get<2>(v), 3.14f ); + BOOST_TEST_EQ( get_if<2>(&v), &get<2>(v) ); + + BOOST_TEST_EQ( get<2>(std::move(v)), 3.14f ); + } + { variant * p = 0; BOOST_TEST_EQ( get_if<0>(p), nullptr ); diff --git a/test/variant_get_by_type.cpp b/test/variant_get_by_type.cpp index 5a179dc..47daa94 100644 --- a/test/variant_get_by_type.cpp +++ b/test/variant_get_by_type.cpp @@ -54,6 +54,17 @@ int main() BOOST_TEST_EQ( get(v), 0 ); BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 0 ); + } + + { + variant const v; + + BOOST_TEST_EQ( get(v), 0 ); + BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 0 ); } { @@ -61,6 +72,17 @@ int main() BOOST_TEST_EQ( get(v), 1 ); BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 1 ); + } + + { + variant const v( 1 ); + + BOOST_TEST_EQ( get(v), 1 ); + BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 1 ); } { @@ -119,6 +141,20 @@ int main() BOOST_TEST_THROWS( get(v), bad_variant_access ); BOOST_TEST_EQ( get_if(&v), nullptr ); + + BOOST_TEST_EQ( get(std::move(v)), 0 ); + } + + { + variant const v; + + BOOST_TEST_EQ( get(v), 0 ); + BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_THROWS( get(v), bad_variant_access ); + BOOST_TEST_EQ( get_if(&v), nullptr ); + + BOOST_TEST_EQ( get(std::move(v)), 0 ); } { @@ -129,6 +165,20 @@ int main() BOOST_TEST_THROWS( get(v), bad_variant_access ); BOOST_TEST_EQ( get_if(&v), nullptr ); + + BOOST_TEST_EQ( get(std::move(v)), 1 ); + } + + { + variant const v( 1 ); + + BOOST_TEST_EQ( get(v), 1 ); + BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_THROWS( get(v), bad_variant_access ); + BOOST_TEST_EQ( get_if(&v), nullptr ); + + BOOST_TEST_EQ( get(std::move(v)), 1 ); } { @@ -139,6 +189,20 @@ int main() BOOST_TEST_EQ( get(v), 3.14f ); BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 3.14f ); + } + + { + variant const v( 3.14f ); + + BOOST_TEST_THROWS( get(v), bad_variant_access ); + BOOST_TEST_EQ( get_if(&v), nullptr ); + + BOOST_TEST_EQ( get(v), 3.14f ); + BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 3.14f ); } { @@ -146,6 +210,17 @@ int main() BOOST_TEST_EQ( get(v), 0 ); BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 0 ); + } + + { + variant const v; + + BOOST_TEST_EQ( get(v), 0 ); + BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 0 ); } { @@ -153,6 +228,17 @@ int main() BOOST_TEST_EQ( get(v), 1 ); BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 1 ); + } + + { + variant const v( 1 ); + + BOOST_TEST_EQ( get(v), 1 ); + BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 1 ); } { @@ -160,6 +246,17 @@ int main() BOOST_TEST_EQ( get(v), 3.14f ); BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 3.14f ); + } + + { + variant const v( 3.14f ); + + BOOST_TEST_EQ( get(v), 3.14f ); + BOOST_TEST_EQ( get_if(&v), &get(v) ); + + BOOST_TEST_EQ( get(std::move(v)), 3.14f ); } {