| //===-- Unittests for strsep ----------------------------------------------===// |
| // |
| // 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/string/strsep.h" |
| #include "test/UnitTest/Test.h" |
| |
| TEST(LlvmLibcStrsepTest, NullSrc) { |
| char *string = nullptr; |
| EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, ""), nullptr); |
| } |
| |
| TEST(LlvmLibcStrsepTest, NoTokenFound) { |
| { |
| char s[] = ""; |
| char *string = s, *orig = s; |
| EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, ""), nullptr); |
| EXPECT_EQ(orig, string); |
| } |
| { |
| char s[] = "abcde"; |
| char *string = s, *orig = s; |
| EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, ""), orig); |
| EXPECT_EQ(string, orig + 5); |
| } |
| { |
| char s[] = "abcde"; |
| char *string = s, *orig = s; |
| EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, "fghijk"), orig); |
| EXPECT_EQ(string, orig + 5); |
| } |
| } |
| |
| TEST(LlvmLibcStrsepTest, TokenFound) { |
| char s[] = "abacd"; |
| char *string = s; |
| EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, "c"), "aba"); |
| EXPECT_STREQ(string, "d"); |
| } |
| |
| TEST(LlvmLibcStrsepTest, DelimitersShouldNotBeIncludedInToken) { |
| char s[] = "__ab__:cd_:_ef_:_"; |
| char *string = s; |
| const char *expected[] = {"", "", "ab", "", "", "cd", "", |
| "", "ef", "", "", "", nullptr}; |
| for (int i = 0; expected[i]; i++) { |
| ASSERT_STREQ(LIBC_NAMESPACE::strsep(&string, "_:"), expected[i]); |
| } |
| } |