blob: 8676e257b7f1627d3b936c774e7d7316f1adb67c [file] [log] [blame]
Patrick Williams51103a42016-07-20 17:43:38 -05001#include <cassert>
2#include <sdbusplus/message/types.hpp>
3#include <sdbusplus/utility/tuple_to_array.hpp>
4
5template <typename ...Args>
6auto dbus_string(Args&& ... args)
7{
8 return std::string(
9 sdbusplus::utility::tuple_to_array(
10 sdbusplus::message::types::type_id<Args...>()).data());
11}
12
13int main()
14{
15
16 // Check a few simple types.
17 assert(dbus_string(1) == "i");
18 assert(dbus_string(1.0) == "d");
19
20 // Check a multiple parameter call.
21 assert(dbus_string(false, true) == "bb");
22 assert(dbus_string(1, 2, 3, true, 1.0) == "iiibd");
23
24 // Check an l-value and r-value reference.
25 {
26 std::string a = "a";
27 std::string b = "b";
28 const char* c = "c";
29
30 assert(dbus_string(a, std::move(b), c) == "sss");
31 }
Patrick Williams44982982017-01-06 16:02:37 -060032
33 // Check object_path and signatures.
34 assert(dbus_string(std::string("asdf"),
35 sdbusplus::message::object_path("/asdf"),
36 sdbusplus::message::signature("sss")) ==
37 "sog");
38
Patrick Williams51103a42016-07-20 17:43:38 -050039 return 0;
40}