blob: 3c9d20a77d3ba0f1baa34ec367d17c458c89f44b [file] [log] [blame]
Patrick Williamsaa2e7f72017-01-06 16:52:45 -06001#include <map>
Patrick Venture95269db2018-08-31 09:19:17 -07002#include <sdbusplus/message.hpp>
William A. Kennington IIIf8bbf172019-05-30 16:12:47 -07003#include <string>
Patrick Williamsaa2e7f72017-01-06 16:52:45 -06004#include <unordered_map>
Patrick Venture95269db2018-08-31 09:19:17 -07005#include <vector>
6
7#include <gtest/gtest.h>
Patrick Williams9db28642017-01-06 15:55:05 -06008
William A. Kennington IIIf8bbf172019-05-30 16:12:47 -07009using namespace std::string_literals;
10
Patrick Williamsb77868a2017-04-28 16:24:23 -050011/* Suite tests that object_path and signature can be cleanly converted to
12 * and from strings and used as container parameters.
13 */
Brad Bishop33068472017-01-24 12:55:01 -050014
Patrick Williamsb77868a2017-04-28 16:24:23 -050015TEST(MessageNativeTypeConversions, ObjectPath)
Patrick Williams9db28642017-01-06 15:55:05 -060016{
17 std::string s1 = sdbusplus::message::object_path("/asdf/");
18 sdbusplus::message::object_path p = std::move(s1);
19
Patrick Williamsb77868a2017-04-28 16:24:23 -050020 ASSERT_EQ("/asdf/", p);
21 ASSERT_EQ(p, "/asdf/");
22}
23
24TEST(MessageNativeTypeConversions, Signature)
25{
Patrick Williams9db28642017-01-06 15:55:05 -060026 std::string s2 = sdbusplus::message::signature("iii");
27 sdbusplus::message::signature sig = s2;
28
Patrick Williamsb77868a2017-04-28 16:24:23 -050029 ASSERT_EQ(sig, s2);
30 ASSERT_EQ(s2, sig);
31}
Brad Bishop33068472017-01-24 12:55:01 -050032
Patrick Williamsb77868a2017-04-28 16:24:23 -050033TEST(MessageNativeTypeConversions, SignatureInVector)
34{
Andrew Geissler072da3e2018-01-18 07:21:42 -080035 std::vector<sdbusplus::message::signature> v = {
36 sdbusplus::message::signature("iii")};
Patrick Williamsaa2e7f72017-01-06 16:52:45 -060037
Patrick Williamsb77868a2017-04-28 16:24:23 -050038 ASSERT_EQ(v.front(), "iii");
39}
40
41TEST(MessageNativeTypeConversions, SignatureInMap)
42{
Andrew Geissler072da3e2018-01-18 07:21:42 -080043 std::map<sdbusplus::message::signature, int> m = {
44 {sdbusplus::message::signature("iii"), 1}};
Patrick Williamsaa2e7f72017-01-06 16:52:45 -060045
Patrick Williamsb77868a2017-04-28 16:24:23 -050046 ASSERT_EQ(m[sdbusplus::message::signature("iii")], 1);
47}
Patrick Williamsaa2e7f72017-01-06 16:52:45 -060048
Patrick Williamsb77868a2017-04-28 16:24:23 -050049TEST(MessageNativeTypeConversions, SignatureInUnorderedMap)
50{
Andrew Geissler072da3e2018-01-18 07:21:42 -080051 std::unordered_map<sdbusplus::message::signature, int> u = {
52 {sdbusplus::message::signature("iii"), 2}};
Patrick Williamsb77868a2017-04-28 16:24:23 -050053
54 ASSERT_EQ(u[sdbusplus::message::signature("iii")], 2);
Patrick Williams9db28642017-01-06 15:55:05 -060055}
William A. Kennington IIIf8bbf172019-05-30 16:12:47 -070056
57TEST(MessageNativeTypeConversions, WrapperReference)
58{
59 auto orig = "str"s;
60 sdbusplus::message::object_path obj = orig;
61 auto out = static_cast<std::string>(obj);
62 EXPECT_EQ(orig, out);
63}
64
65TEST(MessageNativeTypeConversions, WrapperMove)
66{
67 auto orig = "str"s;
68 sdbusplus::message::object_path obj = orig;
69 auto out = static_cast<std::string>(std::move(obj));
70 EXPECT_EQ(orig, out);
71}