| #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 |