// Copyright 2017 The Abseil Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "absl/strings/string_view.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "gtest/gtest.h" #include "absl/base/config.h" #include "absl/meta/type_traits.h" namespace { TEST(StringViewTest, TruncSubstr) { const absl::string_view hi("hi"); EXPECT_EQ("", absl::ClippedSubstr(hi, 0, 0)); EXPECT_EQ("h", absl::ClippedSubstr(hi, 0, 1)); EXPECT_EQ("hi", absl::ClippedSubstr(hi, 0)); EXPECT_EQ("i", absl::ClippedSubstr(hi, 1)); EXPECT_EQ("", absl::ClippedSubstr(hi, 2)); EXPECT_EQ("", absl::ClippedSubstr(hi, 3)); // truncation EXPECT_EQ("", absl::ClippedSubstr(hi, 3, 2)); // truncation } TEST(StringViewTest, NullSafeStringView) { { absl::string_view s = absl::NullSafeStringView(nullptr); EXPECT_EQ(nullptr, s.data()); EXPECT_EQ(0u, s.size()); EXPECT_EQ(absl::string_view(), s); } { static const char kHi[] = "hi"; absl::string_view s = absl::NullSafeStringView(kHi); EXPECT_EQ(kHi, s.data()); EXPECT_EQ(strlen(kHi), s.size()); EXPECT_EQ(absl::string_view("hi"), s); } } TEST(StringViewTest, ConstexprNullSafeStringView) { { constexpr absl::string_view s = absl::NullSafeStringView(nullptr); EXPECT_EQ(nullptr, s.data()); EXPECT_EQ(0u, s.size()); EXPECT_EQ(absl::string_view(), s); } { static constexpr char kHi[] = "hi"; absl::string_view s = absl::NullSafeStringView(kHi); EXPECT_EQ(kHi, s.data()); EXPECT_EQ(strlen(kHi), s.size()); EXPECT_EQ(absl::string_view("hi"), s); } { constexpr absl::string_view s = absl::NullSafeStringView("hello"); EXPECT_EQ(s.size(), 5u); EXPECT_EQ("hello", s); } } } // namespace