blob: bcee3150b0cde7f64c67f4a60bea5307afdd116f [file] [log] [blame]
Patrick Venture95269db2018-08-31 09:19:17 -07001#include <sdbusplus/message.hpp>
Patrick Williams127b8ab2020-05-21 15:24:19 -05002
3#include <map>
William A. Kennington IIIf8bbf172019-05-30 16:12:47 -07004#include <string>
Patrick Williamsaa2e7f72017-01-06 16:52:45 -06005#include <unordered_map>
Patrick Venture95269db2018-08-31 09:19:17 -07006#include <vector>
7
8#include <gtest/gtest.h>
Patrick Williams9db28642017-01-06 15:55:05 -06009
William A. Kennington IIIf8bbf172019-05-30 16:12:47 -070010using namespace std::string_literals;
11
Patrick Williamsb77868a2017-04-28 16:24:23 -050012/* Suite tests that object_path and signature can be cleanly converted to
13 * and from strings and used as container parameters.
14 */
Brad Bishop33068472017-01-24 12:55:01 -050015
Patrick Williamsb77868a2017-04-28 16:24:23 -050016TEST(MessageNativeTypeConversions, ObjectPath)
Patrick Williams9db28642017-01-06 15:55:05 -060017{
18 std::string s1 = sdbusplus::message::object_path("/asdf/");
19 sdbusplus::message::object_path p = std::move(s1);
20
Patrick Williamsb77868a2017-04-28 16:24:23 -050021 ASSERT_EQ("/asdf/", p);
22 ASSERT_EQ(p, "/asdf/");
23}
24
25TEST(MessageNativeTypeConversions, Signature)
26{
Patrick Williams9db28642017-01-06 15:55:05 -060027 std::string s2 = sdbusplus::message::signature("iii");
28 sdbusplus::message::signature sig = s2;
29
Patrick Williamsb77868a2017-04-28 16:24:23 -050030 ASSERT_EQ(sig, s2);
31 ASSERT_EQ(s2, sig);
32}
Brad Bishop33068472017-01-24 12:55:01 -050033
Patrick Williamsb77868a2017-04-28 16:24:23 -050034TEST(MessageNativeTypeConversions, SignatureInVector)
35{
Andrew Geissler072da3e2018-01-18 07:21:42 -080036 std::vector<sdbusplus::message::signature> v = {
37 sdbusplus::message::signature("iii")};
Patrick Williamsaa2e7f72017-01-06 16:52:45 -060038
Patrick Williamsb77868a2017-04-28 16:24:23 -050039 ASSERT_EQ(v.front(), "iii");
40}
41
42TEST(MessageNativeTypeConversions, SignatureInMap)
43{
Andrew Geissler072da3e2018-01-18 07:21:42 -080044 std::map<sdbusplus::message::signature, int> m = {
45 {sdbusplus::message::signature("iii"), 1}};
Patrick Williamsaa2e7f72017-01-06 16:52:45 -060046
Patrick Williamsb77868a2017-04-28 16:24:23 -050047 ASSERT_EQ(m[sdbusplus::message::signature("iii")], 1);
48}
Patrick Williamsaa2e7f72017-01-06 16:52:45 -060049
Patrick Williamsb77868a2017-04-28 16:24:23 -050050TEST(MessageNativeTypeConversions, SignatureInUnorderedMap)
51{
Andrew Geissler072da3e2018-01-18 07:21:42 -080052 std::unordered_map<sdbusplus::message::signature, int> u = {
53 {sdbusplus::message::signature("iii"), 2}};
Patrick Williamsb77868a2017-04-28 16:24:23 -050054
55 ASSERT_EQ(u[sdbusplus::message::signature("iii")], 2);
Patrick Williams9db28642017-01-06 15:55:05 -060056}
William A. Kennington IIIf8bbf172019-05-30 16:12:47 -070057
58TEST(MessageNativeTypeConversions, WrapperReference)
59{
60 auto orig = "str"s;
61 sdbusplus::message::object_path obj = orig;
62 auto out = static_cast<std::string>(obj);
63 EXPECT_EQ(orig, out);
64}
65
66TEST(MessageNativeTypeConversions, WrapperMove)
67{
68 auto orig = "str"s;
69 sdbusplus::message::object_path obj = orig;
70 auto out = static_cast<std::string>(std::move(obj));
71 EXPECT_EQ(orig, out);
72}