| //===-- Unittests for StringView ------------------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "src/__support/CPP/StringView.h" |
| #include "utils/UnitTest/Test.h" |
| |
| TEST(LlvmLibcStringViewTest, InitializeCheck) { |
| __llvm_libc::cpp::StringView v; |
| ASSERT_EQ(v.size(), size_t(0)); |
| ASSERT_TRUE(v.data() == nullptr); |
| |
| v = __llvm_libc::cpp::StringView(""); |
| ASSERT_EQ(v.size(), size_t(0)); |
| ASSERT_TRUE(v.data() == nullptr); |
| |
| v = __llvm_libc::cpp::StringView(nullptr); |
| ASSERT_EQ(v.size(), size_t(0)); |
| ASSERT_TRUE(v.data() == nullptr); |
| |
| v = __llvm_libc::cpp::StringView(nullptr, 10); |
| ASSERT_EQ(v.size(), size_t(0)); |
| ASSERT_TRUE(v.data() == nullptr); |
| |
| v = __llvm_libc::cpp::StringView("abc", 0); |
| ASSERT_EQ(v.size(), size_t(0)); |
| ASSERT_TRUE(v.data() == nullptr); |
| |
| v = __llvm_libc::cpp::StringView("123456789"); |
| ASSERT_EQ(v.size(), size_t(9)); |
| } |
| |
| TEST(LlvmLibcStringViewTest, Equals) { |
| __llvm_libc::cpp::StringView v("abc"); |
| ASSERT_TRUE(v.equals(__llvm_libc::cpp::StringView("abc"))); |
| ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView())); |
| ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView(""))); |
| ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView("123"))); |
| ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView("abd"))); |
| ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView("aaa"))); |
| ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView("abcde"))); |
| } |
| |
| TEST(LlvmLibcStringViewTest, RemovePrefix) { |
| __llvm_libc::cpp::StringView v("123456789"); |
| |
| auto p = v.remove_prefix(0); |
| ASSERT_EQ(p.size(), size_t(9)); |
| ASSERT_TRUE(p.equals(__llvm_libc::cpp::StringView("123456789"))); |
| |
| p = v.remove_prefix(4); |
| ASSERT_EQ(p.size(), size_t(5)); |
| ASSERT_TRUE(p.equals(__llvm_libc::cpp::StringView("56789"))); |
| |
| p = v.remove_prefix(9); |
| ASSERT_EQ(p.size(), size_t(0)); |
| ASSERT_TRUE(p.data() == nullptr); |
| |
| p = v.remove_prefix(10); |
| ASSERT_EQ(p.size(), size_t(0)); |
| ASSERT_TRUE(p.data() == nullptr); |
| } |
| |
| TEST(LlvmLibcStringViewTest, RemoveSuffix) { |
| __llvm_libc::cpp::StringView v("123456789"); |
| |
| auto p = v.remove_suffix(0); |
| ASSERT_EQ(p.size(), size_t(9)); |
| ASSERT_TRUE(p.equals(__llvm_libc::cpp::StringView("123456789"))); |
| |
| p = v.remove_suffix(4); |
| ASSERT_EQ(p.size(), size_t(5)); |
| ASSERT_TRUE(p.equals(__llvm_libc::cpp::StringView("12345"))); |
| |
| p = v.remove_suffix(9); |
| ASSERT_EQ(p.size(), size_t(0)); |
| ASSERT_TRUE(p.data() == nullptr); |
| |
| p = v.remove_suffix(10); |
| ASSERT_EQ(p.size(), size_t(0)); |
| ASSERT_TRUE(p.data() == nullptr); |
| } |
| |
| TEST(LlvmLibcStringViewTest, TrimSingleChar) { |
| __llvm_libc::cpp::StringView v(" 123456789 "); |
| auto t = v.trim(' '); |
| ASSERT_EQ(t.size(), size_t(9)); |
| ASSERT_TRUE(t.equals(__llvm_libc::cpp::StringView("123456789"))); |
| |
| v = __llvm_libc::cpp::StringView("====12345=="); |
| t = v.trim(' '); |
| ASSERT_EQ(v.size(), size_t(11)); |
| ASSERT_TRUE(t.equals(__llvm_libc::cpp::StringView("====12345=="))); |
| |
| t = v.trim('='); |
| ASSERT_EQ(t.size(), size_t(5)); |
| ASSERT_TRUE(t.equals(__llvm_libc::cpp::StringView("12345"))); |
| |
| v = __llvm_libc::cpp::StringView("12345==="); |
| t = v.trim('='); |
| ASSERT_EQ(t.size(), size_t(5)); |
| ASSERT_TRUE(t.equals(__llvm_libc::cpp::StringView("12345"))); |
| |
| v = __llvm_libc::cpp::StringView("===========12345"); |
| t = v.trim('='); |
| ASSERT_EQ(t.size(), size_t(5)); |
| ASSERT_TRUE(t.equals(__llvm_libc::cpp::StringView("12345"))); |
| |
| v = __llvm_libc::cpp::StringView("============"); |
| t = v.trim('='); |
| ASSERT_EQ(t.size(), size_t(0)); |
| ASSERT_TRUE(t.data() == nullptr); |
| |
| v = __llvm_libc::cpp::StringView(); |
| t = v.trim(' '); |
| ASSERT_EQ(t.size(), size_t(0)); |
| ASSERT_TRUE(t.data() == nullptr); |
| |
| v = __llvm_libc::cpp::StringView(""); |
| t = v.trim(' '); |
| ASSERT_EQ(t.size(), size_t(0)); |
| ASSERT_TRUE(t.data() == nullptr); |
| } |