#include #include #include #include #include #include using namespace std::string_literals; /* Suite tests that object_path and signature can be cleanly converted to * and from strings and used as container parameters. */ TEST(MessageNativeTypeConversions, ObjectPath) { std::string s1 = sdbusplus::message::object_path("/asdf/"); sdbusplus::message::object_path p = std::move(s1); ASSERT_EQ("/asdf/", p); ASSERT_EQ(p, "/asdf/"); } TEST(MessageNativeTypeConversions, Signature) { std::string s2 = sdbusplus::message::signature("iii"); sdbusplus::message::signature sig = s2; ASSERT_EQ(sig, s2); ASSERT_EQ(s2, sig); } TEST(MessageNativeTypeConversions, SignatureInVector) { std::vector v = { sdbusplus::message::signature("iii")}; ASSERT_EQ(v.front(), "iii"); } TEST(MessageNativeTypeConversions, SignatureInMap) { std::map m = { {sdbusplus::message::signature("iii"), 1}}; ASSERT_EQ(m[sdbusplus::message::signature("iii")], 1); } TEST(MessageNativeTypeConversions, SignatureInUnorderedMap) { std::unordered_map u = { {sdbusplus::message::signature("iii"), 2}}; ASSERT_EQ(u[sdbusplus::message::signature("iii")], 2); } TEST(MessageNativeTypeConversions, WrapperReference) { auto orig = "str"s; sdbusplus::message::object_path obj = orig; auto out = static_cast(obj); EXPECT_EQ(orig, out); } TEST(MessageNativeTypeConversions, WrapperMove) { auto orig = "str"s; sdbusplus::message::object_path obj = orig; auto out = static_cast(std::move(obj)); EXPECT_EQ(orig, out); }