| #include "str_utility.hpp" | |
| #include <string> | |
| #include <vector> | |
| #include <gmock/gmock.h> // IWYU pragma: keep | |
| #include <gtest/gtest.h> // IWYU pragma: keep | |
| #include "boost/algorithm/string.hpp" // NOLINT | |
| #include "logging.hpp" | |
| #include <nlohmann/json.hpp> | |
| // IWYU pragma: no_include <gtest/gtest-message.h> | |
| // IWYU pragma: no_include <gtest/gtest-test-part.h> | |
| // IWYU pragma: no_include "gtest/gtest_pred_impl.h" | |
| // IWYU pragma: no_include <gmock/gmock-matchers.h> | |
| namespace { | |
| using ::testing::ElementsAre; | |
| TEST(Split, PositiveTests) { | |
| std::vector<std::string> vec; | |
| bmcweb::split(vec, "xx-abc-xx-abb", '-'); | |
| EXPECT_THAT(vec, ElementsAre("xx", "abc", "xx", "abb")); | |
| vec.clear(); | |
| bmcweb::split(vec, "", '-'); | |
| EXPECT_THAT(vec, ElementsAre("")); | |
| vec.clear(); | |
| bmcweb::split(vec, "foo/", '/'); | |
| EXPECT_THAT(vec, ElementsAre("foo", "")); | |
| vec.clear(); | |
| bmcweb::split(vec, "/bar", '/'); | |
| EXPECT_THAT(vec, ElementsAre("", "bar")); | |
| vec.clear(); | |
| bmcweb::split(vec, "/", '/'); | |
| EXPECT_THAT(vec, ElementsAre("", "")); | |
| } | |
| TEST(Split, Sensor) { | |
| std::vector<std::string> vec; | |
| bmcweb::split(vec, "/xyz/openbmc_project/sensors/unit/name", '/'); | |
| EXPECT_THAT(vec, ElementsAre("", "xyz", "openbmc_project", "sensors", "unit", | |
| "name")); | |
| } | |
| // boost version to keep in mind: | |
| TEST(Split, BoostSplit) { | |
| std::vector<std::string> vec; | |
| boost::split(vec, "batman/superman/zebra", boost::is_any_of("/")); | |
| BMCWEB_LOG_DEBUG << "=> BoostSplit: vec: " << nlohmann::json(vec); | |
| EXPECT_THAT(vec, ElementsAre("batman", "superman", "zebra")); | |
| } | |
| TEST(JoinStrings, Two) { | |
| std::string ret; | |
| bmcweb::append_with_sep(ret, ':', "batman", "superman"); | |
| EXPECT_EQ(ret, "batman:superman"); | |
| } | |
| TEST(JoinStrings, One) { | |
| std::string ret; | |
| bmcweb::append_with_sep(ret, ':', "batman"); | |
| EXPECT_EQ(ret, "batman"); | |
| } | |
| } // namespace |