msgpack_tuple.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include <msgpack.hpp>
  2. #include <gtest/gtest.h>
  3. TEST(msgpack_tuple, member_get)
  4. {
  5. msgpack::type::tuple<int, bool, std::string> t1(42, true, "ABC");
  6. EXPECT_EQ(42, t1.get<0>());
  7. EXPECT_EQ(true, t1.get<1>());
  8. EXPECT_EQ("ABC", t1.get<2>());
  9. t1.get<0>() = 40;
  10. t1.get<1>() = false;
  11. t1.get<2>() = "DEFG";
  12. EXPECT_EQ(40, t1.get<0>());
  13. EXPECT_FALSE(t1.get<1>());
  14. EXPECT_EQ("DEFG", t1.get<2>());
  15. }
  16. TEST(msgpack_tuple, non_member_get)
  17. {
  18. msgpack::type::tuple<int, bool, std::string> t1(42, true, "ABC");
  19. EXPECT_EQ(42, msgpack::type::get<0>(t1));
  20. EXPECT_EQ(true, msgpack::type::get<1>(t1));
  21. EXPECT_EQ("ABC", msgpack::type::get<2>(t1));
  22. msgpack::type::get<0>(t1) = 40;
  23. msgpack::type::get<1>(t1) = false;
  24. msgpack::type::get<2>(t1) = "DEFG";
  25. EXPECT_EQ(40, msgpack::type::get<0>(t1));
  26. EXPECT_FALSE(msgpack::type::get<1>(t1));
  27. EXPECT_EQ("DEFG", msgpack::type::get<2>(t1));
  28. }
  29. #if __cplusplus >= 201103L
  30. TEST(msgpack_tuple, std_non_member_get)
  31. {
  32. msgpack::type::tuple<int, bool, std::string> t1(42, true, "ABC");
  33. EXPECT_EQ(42, std::get<0>(t1));
  34. EXPECT_EQ(true, std::get<1>(t1));
  35. EXPECT_EQ("ABC", std::get<2>(t1));
  36. std::get<0>(t1) = 40;
  37. std::get<1>(t1) = false;
  38. std::get<2>(t1) = "DEFG";
  39. EXPECT_EQ(40, std::get<0>(t1));
  40. EXPECT_FALSE(std::get<1>(t1));
  41. EXPECT_EQ("DEFG", std::get<2>(t1));
  42. }
  43. TEST(msgpack_tuple, make_tuple)
  44. {
  45. msgpack::type::tuple<int, bool, std::string> t1 = msgpack::type::make_tuple(42, true, "ABC");
  46. EXPECT_EQ(42, t1.get<0>());
  47. EXPECT_EQ(true, t1.get<1>());
  48. EXPECT_EQ("ABC", t1.get<2>());
  49. t1.get<0>() = 40;
  50. t1.get<1>() = false;
  51. t1.get<2>() = "DEFG";
  52. EXPECT_EQ(40, t1.get<0>());
  53. EXPECT_FALSE(t1.get<1>());
  54. EXPECT_EQ("DEFG", t1.get<2>());
  55. }
  56. TEST(msgpack_tuple, std_make_tuple)
  57. {
  58. msgpack::type::tuple<int, bool, std::string> t1 = std::make_tuple(42, true, "ABC");
  59. EXPECT_EQ(42, t1.get<0>());
  60. EXPECT_EQ(true, t1.get<1>());
  61. EXPECT_EQ("ABC", t1.get<2>());
  62. }
  63. TEST(msgpack_tuple, tie)
  64. {
  65. int i(43);
  66. bool b(false);
  67. std::string s("DEFG");
  68. msgpack::type::tie(i, b, s) = msgpack::type::make_tuple(42, true, "ABC");
  69. EXPECT_EQ(42, i);
  70. EXPECT_EQ(true, b);
  71. EXPECT_EQ("ABC", s);
  72. }
  73. TEST(msgpack_tuple, tuple_cat)
  74. {
  75. msgpack::type::tuple<int> t1 = msgpack::type::make_tuple(42);
  76. msgpack::type::tuple<bool, std::string> t2 = msgpack::type::make_tuple(true, "ABC");
  77. msgpack::type::tuple<int, bool, std::string> t3 = msgpack::type::tuple_cat(t1, std::move(t2));
  78. EXPECT_EQ(42, t3.get<0>());
  79. EXPECT_EQ(true, t3.get<1>());
  80. EXPECT_EQ("ABC", t3.get<2>());
  81. }
  82. TEST(msgpack_tuple, swap)
  83. {
  84. msgpack::type::tuple<int, bool, std::string> t1 = msgpack::type::make_tuple(42, true, "ABC");
  85. msgpack::type::tuple<int, bool, std::string> t2 = msgpack::type::make_tuple(40, false, "DEFG");
  86. msgpack::type::swap(t1, t2);
  87. EXPECT_EQ(42, t2.get<0>());
  88. EXPECT_EQ(true, t2.get<1>());
  89. EXPECT_EQ("ABC", t2.get<2>());
  90. EXPECT_EQ(40, t1.get<0>());
  91. EXPECT_FALSE(t1.get<1>());
  92. EXPECT_EQ("DEFG", t1.get<2>());
  93. }
  94. #endif