1 #include <boost/system/error_code.hpp>
2 #include <sdbusplus/message.hpp>
3 #include <sdbusplus/utility/make_dbus_args_tuple.hpp>
4
5 #include <gtest/gtest.h>
6
7 namespace sdbusplus
8 {
9 namespace utility
10 {
11
TEST(MakeDbusArgsTuple,MessageFirst)12 TEST(MakeDbusArgsTuple, MessageFirst)
13 {
14 std::tuple<boost::system::error_code, sdbusplus::message_t, int>
15 input_tuple;
16 auto tuple_out = make_dbus_args_tuple(input_tuple);
17 static_assert(
18 std::is_same_v<std::tuple_element_t<0, decltype(tuple_out)>, int&>,
19 "Second type wasn't int");
20 static_assert(std::tuple_size_v<decltype(tuple_out)> == 1,
21 "Size was wrong");
22 // Verify the output reference is now the first member, and references the 2
23 // index tuple arg
24 EXPECT_EQ(&std::get<2>(input_tuple), &std::get<0>(tuple_out));
25 }
TEST(MakeDbusArgsTuple,ArgFirst)26 TEST(MakeDbusArgsTuple, ArgFirst)
27 {
28 std::tuple<boost::system::error_code, int> input_tuple{
29 boost::system::error_code(), 42};
30 auto tuple_out = make_dbus_args_tuple(input_tuple);
31 static_assert(
32 std::is_same_v<std::tuple_element_t<0, decltype(tuple_out)>, int&>,
33 "Second type wasn't int");
34 static_assert(std::tuple_size_v<decltype(tuple_out)> == 1,
35 "Size was wrong");
36 // Verify the output reference is now the first member, and references the 1
37 // index tuple arg
38 EXPECT_EQ(&std::get<1>(input_tuple), &std::get<0>(tuple_out));
39 EXPECT_EQ(std::get<0>(tuple_out), 42);
40 }
TEST(MakeDbusArgsTuple,NoArgs)41 TEST(MakeDbusArgsTuple, NoArgs)
42 {
43 std::tuple<boost::system::error_code> input_tuple;
44 auto tuple_out = make_dbus_args_tuple(input_tuple);
45 static_assert(std::tuple_size_v<decltype(tuple_out)> == 0,
46 "Size was wrong");
47 }
48 } // namespace utility
49 } // namespace sdbusplus
50