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 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 54 TEST_P(TestPathAppendFail, pathAppendsCorrectly) 55 { 56 auto [basePath, extension] = GetParam(); 57 EXPECT_THROW(pathAppend(basePath, extension), 58 sdbusplus::exception::SdBusError); 59 } 60