18 const std::string error =
"Uh ah an error!";
20 auto s = mp::UnPack<decltype(r)>(mp::Pack(r));
23 ASSERT_TRUE(s.HasError());
24 ASSERT_EQ(s.GetError().What(), error);
26 s = mp::UnPack<decltype(r)>(mp::Pack(r));
28 ASSERT_EQ(r.
Get(), 42);
29 ASSERT_FALSE(s.HasError());
30 ASSERT_EQ(s.Get(), 42);
32 s = mp::UnPack<decltype(r)>(mp::Pack(r));
36 ASSERT_EQ(s.GetError().What(), error);
38 auto sv = mp::UnPack<decltype(rv)>(mp::Pack(rv));
41 ASSERT_TRUE(sv.HasError());
45 auto es = mp::UnPack<decltype(er)>(mp::Pack(er));
48 ASSERT_FALSE(es.HasError());
50 es = mp::UnPack<decltype(er)>(mp::Pack(er));
55 ASSERT_EQ(es.GetError().What(), error);
69 auto buffer = c::MsgPack::Pack(actor);
70 auto result = c::MsgPack::UnPack<Actor>(buffer);
72 ASSERT_EQ(result.id, actor.
id);
81 boost::variant2::variant<bool, float, std::string> var;
84 auto result = mp::UnPack<decltype(var)>(mp::Pack(var));
85 ASSERT_EQ(result.index(), 0);
86 ASSERT_EQ(boost::variant2::get<bool>(result),
true);
89 result = mp::UnPack<decltype(var)>(mp::Pack(var));
90 ASSERT_EQ(result.index(), 1);
91 ASSERT_EQ(boost::variant2::get<float>(result), 42.0f);
93 var = std::string(
"hola!");
94 result = mp::UnPack<decltype(var)>(mp::Pack(var));
95 ASSERT_EQ(result.index(), 2);
96 ASSERT_EQ(boost::variant2::get<std::string>(result),
"hola!");
102 boost::optional<float> var;
104 auto result = mp::UnPack<decltype(var)>(mp::Pack(var));
106 ASSERT_FALSE(result.has_value());
109 result = mp::UnPack<decltype(var)>(mp::Pack(var));
111 ASSERT_TRUE(result.has_value());
112 ASSERT_EQ(*result, 42.0f);