1 #include "helpers.hpp"
2 #include "utils/dbus_path_utils.hpp"
3
4 #include <sdbusplus/exception.hpp>
5
6 #include <gmock/gmock.h>
7
8 using namespace testing;
9 using sdbusplus::message::object_path;
10 using utils::pathAppend;
11
12 class TestPathAppend :
13 public Test,
14 public WithParamInterface<std::tuple<object_path, std::string, object_path>>
15 {};
16
17 INSTANTIATE_TEST_SUITE_P(
18 _, TestPathAppend,
19 Values(std::make_tuple(object_path("/Base/Path"), "one",
20 object_path("/Base/Path/one")),
21 std::make_tuple(object_path("/Base/Path"), "one/two",
22 object_path("/Base/Path/one/two")),
23 std::make_tuple(object_path("/Base/Path"), "one/two/foobar",
24 object_path("/Base/Path/one/two/foobar")),
25 std::make_tuple(object_path("/Base/Path/"), "one",
26 object_path("/Base/Path/one")),
27 std::make_tuple(object_path("/Base/Path/"), "one/two",
28 object_path("/Base/Path/one/two")),
29 std::make_tuple(object_path("/Base/Path/"), "one/two/foobar",
30 object_path("/Base/Path/one/two/foobar")),
31 std::make_tuple(object_path("/Base/Path"), "",
32 object_path("/Base/Path/"))));
33
TEST_P(TestPathAppend,pathAppendsCorrectly)34 TEST_P(TestPathAppend, pathAppendsCorrectly)
35 {
36 auto [basePath, extension, expectedPath] = GetParam();
37 EXPECT_EQ(pathAppend(basePath, extension), expectedPath);
38 }
39
40 class TestPathAppendFail :
41 public Test,
42 public WithParamInterface<std::tuple<object_path, std::string>>
43 {};
44
45 INSTANTIATE_TEST_SUITE_P(
46 _, TestPathAppendFail,
47 Values(std::make_tuple(object_path("/Base/Path"), "/one"),
48 std::make_tuple(object_path("/Base/Path"), "one/"),
49 std::make_tuple(object_path("/Base/Path"), "one/two/"),
50 std::make_tuple(object_path("/Base/Path"), "one//two"),
51 std::make_tuple(object_path("/Base/Path"), "/"),
52 std::make_tuple(object_path("/Base/Path"), "//")));
53
TEST_P(TestPathAppendFail,pathAppendsCorrectly)54 TEST_P(TestPathAppendFail, pathAppendsCorrectly)
55 {
56 auto [basePath, extension] = GetParam();
57 EXPECT_THROW(pathAppend(basePath, extension),
58 sdbusplus::exception::SdBusError);
59 }
60