//===-- 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 "utils/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); }