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(), "/"); |
| 56 | EXPECT_EQ(sdbusplus::message::object_path("/bios_active").filename(), |
Ed Tanous | d06072e | 2021-04-21 08:27:58 -0700 | [diff] [blame] | 57 | "bios_active"); |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 58 | } |
| 59 | |
| 60 | TEST(MessageTypes, ObjectPathParent) |
| 61 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 62 | EXPECT_EQ(sdbusplus::message::object_path("/abc/def").parent_path(), |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 63 | sdbusplus::message::object_path("/abc")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 64 | EXPECT_EQ(sdbusplus::message::object_path("/abc/").parent_path(), |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 65 | sdbusplus::message::object_path("/abc")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 66 | EXPECT_EQ(sdbusplus::message::object_path("/abc").parent_path(), |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 67 | sdbusplus::message::object_path("/")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 68 | EXPECT_EQ(sdbusplus::message::object_path("/").parent_path(), |
Ed Tanous | eb4bd72 | 2020-12-18 00:25:21 +0000 | [diff] [blame] | 69 | sdbusplus::message::object_path("/")); |
| 70 | } |
| 71 | |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 72 | TEST(MessageTypes, ObjectPathOperatorSlash) |
| 73 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 74 | EXPECT_EQ(sdbusplus::message::object_path("/") / "abc", |
Ed Tanous | d06072e | 2021-04-21 08:27:58 -0700 | [diff] [blame] | 75 | sdbusplus::message::object_path("/_61bc")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 76 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / "def", |
Ed Tanous | d06072e | 2021-04-21 08:27:58 -0700 | [diff] [blame] | 77 | sdbusplus::message::object_path("/abc/_64ef")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 78 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / "-", |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 79 | sdbusplus::message::object_path("/abc/_2d")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 80 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / " ", |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 81 | sdbusplus::message::object_path("/abc/_20")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 82 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / "/", |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 83 | sdbusplus::message::object_path("/abc/_2f")); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 84 | EXPECT_EQ(sdbusplus::message::object_path("/abc") / "ab_cd", |
Ed Tanous | d06072e | 2021-04-21 08:27:58 -0700 | [diff] [blame] | 85 | sdbusplus::message::object_path("/abc/_61b_5fcd")); |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 86 | |
| 87 | // 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] | 88 | EXPECT_EQ(sdbusplus::message::object_path("/") / std::string("abc"), |
Ed Tanous | d06072e | 2021-04-21 08:27:58 -0700 | [diff] [blame] | 89 | sdbusplus::message::object_path("/_61bc")); |
Ed Tanous | fa0fa3b | 2021-03-31 17:14:57 -0700 | [diff] [blame] | 90 | } |
| 91 | |
Ed Tanous | 74a2711 | 2021-04-07 15:40:00 -0700 | [diff] [blame] | 92 | TEST(MessageTypes, ObjectPathOperatorSlashEqual) |
| 93 | { |
| 94 | sdbusplus::message::object_path path("/"); |
| 95 | path /= "abc"; |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 96 | EXPECT_EQ(path, sdbusplus::message::object_path("/_61bc")); |
Ed Tanous | 74a2711 | 2021-04-07 15:40:00 -0700 | [diff] [blame] | 97 | |
| 98 | sdbusplus::message::object_path path2("/"); |
| 99 | path2 /= std::string("def"); |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 100 | EXPECT_EQ(path2, sdbusplus::message::object_path("/_64ef")); |
Ed Tanous | 74a2711 | 2021-04-07 15:40:00 -0700 | [diff] [blame] | 101 | } |
| 102 | |
Patrick Williams | 450d0ec | 2017-04-28 16:09:09 -0500 | [diff] [blame] | 103 | TEST(MessageTypes, Signature) |
| 104 | { |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 105 | EXPECT_EQ(dbus_string(sdbusplus::message::signature("sss")), "g"); |
Patrick Williams | 51103a4 | 2016-07-20 17:43:38 -0500 | [diff] [blame] | 106 | } |
Patrick Williams | b98bdc6 | 2020-06-16 16:15:40 -0500 | [diff] [blame] | 107 | |
| 108 | TEST(MessageTypes, VectorOfString) |
| 109 | { |
| 110 | std::vector<std::string> s = {"a", "b"}; |
| 111 | |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 112 | EXPECT_EQ(dbus_string(s), "as"); |
Patrick Williams | b98bdc6 | 2020-06-16 16:15:40 -0500 | [diff] [blame] | 113 | } |
| 114 | |
| 115 | TEST(MessageTypes, SetOfString) |
| 116 | { |
| 117 | std::set<std::string> s = {"a", "b"}; |
| 118 | |
William A. Kennington III | e39b3dc | 2021-05-05 17:18:29 -0700 | [diff] [blame] | 119 | EXPECT_EQ(dbus_string(s), "as"); |
Patrick Williams | b98bdc6 | 2020-06-16 16:15:40 -0500 | [diff] [blame] | 120 | } |