| 10 | |
| 11 | namespace xgboost { |
| 12 | TEST(StringView, Basic) { |
| 13 | StringView str{"This is a string."}; |
| 14 | std::stringstream ss; |
| 15 | ss << str; |
| 16 | |
| 17 | std::string res = ss.str(); |
| 18 | ASSERT_EQ(str.size(), res.size()); |
| 19 | ASSERT_TRUE(std::equal(res.cbegin(), res.cend(), str.cbegin())); |
| 20 | |
| 21 | auto substr = str.substr(5, 2); |
| 22 | ASSERT_EQ(substr.size(), 2); |
| 23 | |
| 24 | ASSERT_EQ(StringView{"is"}.size(), 2); |
| 25 | ASSERT_TRUE(substr == "is"); |
| 26 | ASSERT_FALSE(substr != "is"); |
| 27 | ASSERT_FALSE(substr == "foobar"); |
| 28 | ASSERT_FALSE(substr == "i"); |
| 29 | |
| 30 | ASSERT_TRUE(std::equal(substr.crbegin(), substr.crend(), StringView{"si"}.cbegin())); |
| 31 | |
| 32 | { |
| 33 | StringView empty{nullptr}; |
| 34 | ASSERT_TRUE(empty.empty()); |
| 35 | } |
| 36 | { |
| 37 | StringView empty{""}; |
| 38 | ASSERT_TRUE(empty.empty()); |
| 39 | StringView empty2{nullptr}; |
| 40 | ASSERT_EQ(empty, empty2); |
| 41 | } |
| 42 | } |
| 43 | } // namespace xgboost |