blob: 6ec2d7163d47f2e36241b2f29cd905d60f7c8ece [file] [log] [blame]
Ed Tanouse8f2b0d2025-09-12 15:11:13 -07001#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
7namespace sdbusplus
8{
9namespace utility
10{
11
12TEST(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}
26TEST(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}
41TEST(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