Patrick Williams | 51103a4 | 2016-07-20 17:43:38 -0500 | [diff] [blame] | 1 | #include <sdbusplus/message/types.hpp> |
| 2 | #include <sdbusplus/utility/tuple_to_array.hpp> |
| 3 | |
Patrick Venture | 95269db | 2018-08-31 09:19:17 -0700 | [diff] [blame] | 4 | #include <gtest/gtest.h> |
| 5 | |
Patrick Venture | 2b238af | 2018-08-31 12:45:01 -0700 | [diff] [blame] | 6 | template <typename... Args> |
Patrick Williams | 78b7803 | 2020-05-20 10:32:05 -0500 | [diff] [blame] | 7 | auto dbus_string(Args&&... /*args*/) |
Patrick Williams | 51103a4 | 2016-07-20 17:43:38 -0500 | [diff] [blame] | 8 | { |
Andrew Geissler | 072da3e | 2018-01-18 07:21:42 -0800 | [diff] [blame] | 9 | return std::string(sdbusplus::utility::tuple_to_array( |
| 10 | sdbusplus::message::types::type_id<Args...>()) |
| 11 | .data()); |
Patrick Williams | 51103a4 | 2016-07-20 17:43:38 -0500 | [diff] [blame] | 12 | } |
| 13 | |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 14 | TEST(MessageTypes, Integer) |
Patrick Williams | 51103a4 | 2016-07-20 17:43:38 -0500 | [diff] [blame] | 15 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 16 | EXPECT_EQ(dbus_string(1), "i"); |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 17 | } |
Patrick Williams | 51103a4 | 2016-07-20 17:43:38 -0500 | [diff] [blame] | 18 | |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 19 | TEST(MessageTypes, Double) |
| 20 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 21 | EXPECT_EQ(dbus_string(1.0), "d"); |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 22 | } |
Patrick Williams | 51103a4 | 2016-07-20 17:43:38 -0500 | [diff] [blame] | 23 | |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 24 | TEST(MessageTypes, MultipleParameter) |
| 25 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 26 | EXPECT_EQ(dbus_string(false, true), "bb"); |
| 27 | EXPECT_EQ(dbus_string(1, 2, 3, true, 1.0), "iiibd"); |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 28 | } |
Patrick Williams | 51103a4 | 2016-07-20 17:43:38 -0500 | [diff] [blame] | 29 | |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 30 | TEST(MessageTypes, StringReferences) |
| 31 | { |
| 32 | std::string a = "a"; |
| 33 | std::string b = "b"; |
| 34 | const char* c = "c"; |
Patrick Williams | 51103a4 | 2016-07-20 17:43:38 -0500 | [diff] [blame] | 35 | |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 36 | EXPECT_EQ(dbus_string(a, std::move(b), c), "sss"); |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 37 | } |
Patrick Williams | 4498298 | 2017-01-06 16:02:37 -0600 | [diff] [blame] | 38 | |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 39 | TEST(MessageTypes, ObjectPath) |
| 40 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 41 | EXPECT_EQ(dbus_string(sdbusplus::message::object_path("/asdf")), "o"); |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 42 | } |
Patrick Williams | 4498298 | 2017-01-06 16:02:37 -0600 | [diff] [blame] | 43 | |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 44 | TEST(MessageTypes, ObjectPathFilename) |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 45 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 46 | EXPECT_EQ(sdbusplus::message::object_path("/abc/def").filename(), "def"); |
| 47 | EXPECT_EQ(sdbusplus::message::object_path("/abc/").filename(), ""); |
| 48 | EXPECT_EQ(sdbusplus::message::object_path("/abc").filename(), "abc"); |
| 49 | EXPECT_EQ(sdbusplus::message::object_path("/_61bc").filename(), "abc"); |
| 50 | EXPECT_EQ(sdbusplus::message::object_path("/").filename(), ""); |
| 51 | EXPECT_EQ(sdbusplus::message::object_path("").filename(), ""); |
| 52 | EXPECT_EQ(sdbusplus::message::object_path("abc").filename(), ""); |
| 53 | EXPECT_EQ(sdbusplus::message::object_path("/_2d").filename(), "-"); |
| 54 | EXPECT_EQ(sdbusplus::message::object_path("/_20").filename(), " "); |
| 55 | EXPECT_EQ(sdbusplus::message::object_path("/_2F").filename(), "/"); |
William A. Kennington III | 285f78b | 2021-05-01 18:35:11 -0700 | [diff] [blame] | 56 | EXPECT_EQ(sdbusplus::message::object_path("/_").filename(), ""); |
| 57 | EXPECT_EQ(sdbusplus::message::object_path("/_2").filename(), ""); |
| 58 | EXPECT_EQ(sdbusplus::message::object_path("/_2y").filename(), ""); |
| 59 | EXPECT_EQ(sdbusplus::message::object_path("/_y2").filename(), ""); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 60 | EXPECT_EQ(sdbusplus::message::object_path("/bios_active").filename(), |
Ed Tanous | d06072e | 2021-04-21 08:27:58 -0700 | [diff] [blame] | 61 | "bios_active"); |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 62 | } |
| 63 | |
| 64 | TEST(MessageTypes, ObjectPathParent) |
| 65 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 66 | EXPECT_EQ(sdbusplus::message::object_path("/abc/def").parent_path(), |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 67 | sdbusplus::message::object_path("/abc")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 68 | EXPECT_EQ(sdbusplus::message::object_path("/abc/").parent_path(), |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 69 | sdbusplus::message::object_path("/abc")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 70 | EXPECT_EQ(sdbusplus::message::object_path("/abc").parent_path(), |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 71 | sdbusplus::message::object_path("/")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 72 | EXPECT_EQ(sdbusplus::message::object_path("/").parent_path(), |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 73 | sdbusplus::message::object_path("/")); |
| 74 | } |
| 75 | |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 76 | TEST(MessageTypes, ObjectPathOperatorSlash) |
| 77 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 78 | EXPECT_EQ(sdbusplus::message::object_path("/") / "abc", |
William A. Kennington III | 8db46a0 | 2021-05-05 17:53:35 -0700 | [diff] [blame] | 79 | sdbusplus::message::object_path("/abc")); |
William A. Kennington III | 285f78b | 2021-05-01 18:35:11 -0700 | [diff] [blame] | 80 | EXPECT_EQ(sdbusplus::message::object_path("/") / "abc", |
William A. Kennington III | 8db46a0 | 2021-05-05 17:53:35 -0700 | [diff] [blame] | 81 | sdbusplus::message::object_path("/abc")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 82 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / "def", |
William A. Kennington III | 8db46a0 | 2021-05-05 17:53:35 -0700 | [diff] [blame] | 83 | sdbusplus::message::object_path("/abc/def")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 84 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / "-", |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 85 | sdbusplus::message::object_path("/abc/_2d")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 86 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / " ", |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 87 | sdbusplus::message::object_path("/abc/_20")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 88 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / "/", |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 89 | sdbusplus::message::object_path("/abc/_2f")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 90 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / "ab_cd", |
William A. Kennington III | 8db46a0 | 2021-05-05 17:53:35 -0700 | [diff] [blame] | 91 | sdbusplus::message::object_path("/abc/ab_cd")); |
William A. Kennington III | 285f78b | 2021-05-01 18:35:11 -0700 | [diff] [blame] | 92 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / "_ab_cd", |
| 93 | sdbusplus::message::object_path("/abc/_5fab_5fcd")); |
| 94 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / "ab-c_d", |
| 95 | sdbusplus::message::object_path("/abc/_61b_2dc_5fd")); |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 96 | |
| 97 | // Test the std::string overload. This is largely just for coverage |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 98 | EXPECT_EQ(sdbusplus::message::object_path("/") / std::string("abc"), |
William A. Kennington III | 8db46a0 | 2021-05-05 17:53:35 -0700 | [diff] [blame] | 99 | sdbusplus::message::object_path("/abc")); |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 100 | } |
| 101 | |
Ed Tanous | 74a2711 | 2021-04-07 15:40:00 -0700 | [diff] [blame] | 102 | TEST(MessageTypes, ObjectPathOperatorSlashEqual) |
| 103 | { |
| 104 | sdbusplus::message::object_path path("/"); |
| 105 | path /= "abc"; |
William A. Kennington III | 8db46a0 | 2021-05-05 17:53:35 -0700 | [diff] [blame] | 106 | EXPECT_EQ(path, sdbusplus::message::object_path("/abc")); |
Ed Tanous | 74a2711 | 2021-04-07 15:40:00 -0700 | [diff] [blame] | 107 | |
| 108 | sdbusplus::message::object_path path2("/"); |
William A. Kennington III | 285f78b | 2021-05-01 18:35:11 -0700 | [diff] [blame] | 109 | path2 /= std::string("d-ef"); |
| 110 | EXPECT_EQ(path2, sdbusplus::message::object_path("/_64_2def")); |
Ed Tanous | 74a2711 | 2021-04-07 15:40:00 -0700 | [diff] [blame] | 111 | } |
| 112 | |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 113 | TEST(MessageTypes, Signature) |
| 114 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 115 | EXPECT_EQ(dbus_string(sdbusplus::message::signature("sss")), "g"); |
Patrick Williams | 51103a4 | 2016-07-20 17:43:38 -0500 | [diff] [blame] | 116 | } |
Patrick Williams | b98bdc6 | 2020-06-16 16:15:40 -0500 | [diff] [blame] | 117 | |
| 118 | TEST(MessageTypes, VectorOfString) |
| 119 | { |
| 120 | std::vector<std::string> s = {"a", "b"}; |
| 121 | |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 122 | EXPECT_EQ(dbus_string(s), "as"); |
Patrick Williams | b98bdc6 | 2020-06-16 16:15:40 -0500 | [diff] [blame] | 123 | } |
| 124 | |
| 125 | TEST(MessageTypes, SetOfString) |
| 126 | { |
| 127 | std::set<std::string> s = {"a", "b"}; |
| 128 | |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 129 | EXPECT_EQ(dbus_string(s), "as"); |
Patrick Williams | b98bdc6 | 2020-06-16 16:15:40 -0500 | [diff] [blame] | 130 | } |