| #include <msgpack.hpp> |
| #include <gtest/gtest.h> |
| |
| |
| TEST(msgpack_tuple, member_get) |
| { |
| msgpack::type::tuple<int, bool, std::string> t1(42, true, "ABC"); |
| EXPECT_EQ(42, t1.get<0>()); |
| EXPECT_EQ(true, t1.get<1>()); |
| EXPECT_EQ("ABC", t1.get<2>()); |
| t1.get<0>() = 40; |
| t1.get<1>() = false; |
| t1.get<2>() = "DEFG"; |
| EXPECT_EQ(40, t1.get<0>()); |
| EXPECT_EQ(false, t1.get<1>()); |
| EXPECT_EQ("DEFG", t1.get<2>()); |
| } |
| |
| TEST(msgpack_tuple, non_member_get) |
| { |
| msgpack::type::tuple<int, bool, std::string> t1(42, true, "ABC"); |
| EXPECT_EQ(42, msgpack::type::get<0>(t1)); |
| EXPECT_EQ(true, msgpack::type::get<1>(t1)); |
| EXPECT_EQ("ABC", msgpack::type::get<2>(t1)); |
| msgpack::type::get<0>(t1) = 40; |
| msgpack::type::get<1>(t1) = false; |
| msgpack::type::get<2>(t1) = "DEFG"; |
| EXPECT_EQ(40, msgpack::type::get<0>(t1)); |
| EXPECT_EQ(false, msgpack::type::get<1>(t1)); |
| EXPECT_EQ("DEFG", msgpack::type::get<2>(t1)); |
| } |
| |
| #if __cplusplus >= 201103L |
| TEST(msgpack_tuple, std_non_member_get) |
| { |
| msgpack::type::tuple<int, bool, std::string> t1(42, true, "ABC"); |
| EXPECT_EQ(42, std::get<0>(t1)); |
| EXPECT_EQ(true, std::get<1>(t1)); |
| EXPECT_EQ("ABC", std::get<2>(t1)); |
| std::get<0>(t1) = 40; |
| std::get<1>(t1) = false; |
| std::get<2>(t1) = "DEFG"; |
| EXPECT_EQ(40, std::get<0>(t1)); |
| EXPECT_EQ(false, std::get<1>(t1)); |
| EXPECT_EQ("DEFG", std::get<2>(t1)); |
| } |
| |
| TEST(msgpack_tuple, make_tuple) |
| { |
| msgpack::type::tuple<int, bool, std::string> t1 = msgpack::type::make_tuple(42, true, "ABC"); |
| EXPECT_EQ(42, t1.get<0>()); |
| EXPECT_EQ(true, t1.get<1>()); |
| EXPECT_EQ("ABC", t1.get<2>()); |
| t1.get<0>() = 40; |
| t1.get<1>() = false; |
| t1.get<2>() = "DEFG"; |
| EXPECT_EQ(40, t1.get<0>()); |
| EXPECT_EQ(false, t1.get<1>()); |
| EXPECT_EQ("DEFG", t1.get<2>()); |
| } |
| |
| TEST(msgpack_tuple, std_make_tuple) |
| { |
| msgpack::type::tuple<int, bool, std::string> t1 = std::make_tuple(42, true, "ABC"); |
| EXPECT_EQ(42, t1.get<0>()); |
| EXPECT_EQ(true, t1.get<1>()); |
| EXPECT_EQ("ABC", t1.get<2>()); |
| } |
| |
| TEST(msgpack_tuple, tie) |
| { |
| int i(43); |
| bool b(false); |
| std::string s("DEFG"); |
| msgpack::type::tie(i, b, s) = msgpack::type::make_tuple(42, true, "ABC"); |
| EXPECT_EQ(42, i); |
| EXPECT_EQ(true, b); |
| EXPECT_EQ("ABC", s); |
| } |
| |
| TEST(msgpack_tuple, tuple_cat) |
| { |
| msgpack::type::tuple<int> t1 = msgpack::type::make_tuple(42); |
| msgpack::type::tuple<bool, std::string> t2 = msgpack::type::make_tuple(true, "ABC"); |
| msgpack::type::tuple<int, bool, std::string> t3 = msgpack::type::tuple_cat(t1, std::move(t2)); |
| EXPECT_EQ(42, t3.get<0>()); |
| EXPECT_EQ(true, t3.get<1>()); |
| EXPECT_EQ("ABC", t3.get<2>()); |
| } |
| |
| TEST(msgpack_tuple, swap) |
| { |
| msgpack::type::tuple<int, bool, std::string> t1 = msgpack::type::make_tuple(42, true, "ABC"); |
| msgpack::type::tuple<int, bool, std::string> t2 = msgpack::type::make_tuple(40, false, "DEFG"); |
| msgpack::type::swap(t1, t2); |
| EXPECT_EQ(42, t2.get<0>()); |
| EXPECT_EQ(true, t2.get<1>()); |
| EXPECT_EQ("ABC", t2.get<2>()); |
| EXPECT_EQ(40, t1.get<0>()); |
| EXPECT_EQ(false, t1.get<1>()); |
| EXPECT_EQ("DEFG", t1.get<2>()); |
| } |
| #endif |