blob: 9f82f0a3e1de764860944224a78ceee69151ee43 [file] [log] [blame]
Patrick Williams51103a42016-07-20 17:43:38 -05001#include <sdbusplus/message/types.hpp>
2#include <sdbusplus/utility/tuple_to_array.hpp>
3
Patrick Venture95269db2018-08-31 09:19:17 -07004#include <gtest/gtest.h>
5
Patrick Venture2b238af2018-08-31 12:45:01 -07006template <typename... Args>
Patrick Williams78b78032020-05-20 10:32:05 -05007auto dbus_string(Args&&... /*args*/)
Patrick Williams51103a42016-07-20 17:43:38 -05008{
Andrew Geissler072da3e2018-01-18 07:21:42 -08009 return std::string(sdbusplus::utility::tuple_to_array(
10 sdbusplus::message::types::type_id<Args...>())
11 .data());
Patrick Williams51103a42016-07-20 17:43:38 -050012}
13
Patrick Williams450d0ec2017-04-28 16:09:09 -050014TEST(MessageTypes, Integer)
Patrick Williams51103a42016-07-20 17:43:38 -050015{
Andrew Geissler072da3e2018-01-18 07:21:42 -080016 ASSERT_EQ(dbus_string(1), "i");
Patrick Williams450d0ec2017-04-28 16:09:09 -050017}
Patrick Williams51103a42016-07-20 17:43:38 -050018
Patrick Williams450d0ec2017-04-28 16:09:09 -050019TEST(MessageTypes, Double)
20{
21 ASSERT_EQ(dbus_string(1.0), "d");
22}
Patrick Williams51103a42016-07-20 17:43:38 -050023
Patrick Williams450d0ec2017-04-28 16:09:09 -050024TEST(MessageTypes, MultipleParameter)
25{
26 ASSERT_EQ(dbus_string(false, true), "bb");
27 ASSERT_EQ(dbus_string(1, 2, 3, true, 1.0), "iiibd");
28}
Patrick Williams51103a42016-07-20 17:43:38 -050029
Patrick Williams450d0ec2017-04-28 16:09:09 -050030TEST(MessageTypes, StringReferences)
31{
32 std::string a = "a";
33 std::string b = "b";
34 const char* c = "c";
Patrick Williams51103a42016-07-20 17:43:38 -050035
Patrick Williams450d0ec2017-04-28 16:09:09 -050036 ASSERT_EQ(dbus_string(a, std::move(b), c), "sss");
37}
Patrick Williams44982982017-01-06 16:02:37 -060038
Patrick Williams450d0ec2017-04-28 16:09:09 -050039TEST(MessageTypes, ObjectPath)
40{
41 ASSERT_EQ(dbus_string(sdbusplus::message::object_path("/asdf")), "o");
42}
Patrick Williams44982982017-01-06 16:02:37 -060043
Ed Tanouseb4bd722020-12-18 00:25:21 +000044TEST(MessageTypes, ObjectPathLeaf)
45{
46 ASSERT_EQ(sdbusplus::message::object_path("/abc/def").filename(), "def");
47 ASSERT_EQ(sdbusplus::message::object_path("/abc/").filename(), "");
48 ASSERT_EQ(sdbusplus::message::object_path("/abc").filename(), "abc");
49 ASSERT_EQ(sdbusplus::message::object_path("/").filename(), "");
50 ASSERT_EQ(sdbusplus::message::object_path("").filename(), "");
51 ASSERT_EQ(sdbusplus::message::object_path("abc").filename(), "");
52}
53
54TEST(MessageTypes, ObjectPathParent)
55{
56 ASSERT_EQ(sdbusplus::message::object_path("/abc/def").parent_path(),
57 sdbusplus::message::object_path("/abc"));
58 ASSERT_EQ(sdbusplus::message::object_path("/abc/").parent_path(),
59 sdbusplus::message::object_path("/abc"));
60 ASSERT_EQ(sdbusplus::message::object_path("/abc").parent_path(),
61 sdbusplus::message::object_path("/"));
62 ASSERT_EQ(sdbusplus::message::object_path("/").parent_path(),
63 sdbusplus::message::object_path("/"));
64}
65
Patrick Williams450d0ec2017-04-28 16:09:09 -050066TEST(MessageTypes, Signature)
67{
68 ASSERT_EQ(dbus_string(sdbusplus::message::signature("sss")), "g");
Patrick Williams51103a42016-07-20 17:43:38 -050069}
Patrick Williamsb98bdc62020-06-16 16:15:40 -050070
71TEST(MessageTypes, VectorOfString)
72{
73 std::vector<std::string> s = {"a", "b"};
74
75 ASSERT_EQ(dbus_string(s), "as");
76}
77
78TEST(MessageTypes, SetOfString)
79{
80 std::set<std::string> s = {"a", "b"};
81
82 ASSERT_EQ(dbus_string(s), "as");
83}