xref: /aosp_15_r20/external/llvm-libc/test/src/string/strsep_test.cpp (revision 71db0c75aadcf003ffe3238005f61d7618a3fead)
1 //===-- Unittests for strsep ----------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "src/string/strsep.h"
10 #include "test/UnitTest/Test.h"
11 
TEST(LlvmLibcStrsepTest,NullSrc)12 TEST(LlvmLibcStrsepTest, NullSrc) {
13   char *string = nullptr;
14   EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, ""), nullptr);
15 }
16 
TEST(LlvmLibcStrsepTest,NoTokenFound)17 TEST(LlvmLibcStrsepTest, NoTokenFound) {
18   {
19     char s[] = "";
20     char *string = s, *orig = s;
21     EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, ""), nullptr);
22     EXPECT_EQ(orig, string);
23   }
24   {
25     char s[] = "abcde";
26     char *string = s, *orig = s;
27     EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, ""), orig);
28     EXPECT_EQ(string, orig + 5);
29   }
30   {
31     char s[] = "abcde";
32     char *string = s, *orig = s;
33     EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, "fghijk"), orig);
34     EXPECT_EQ(string, orig + 5);
35   }
36 }
37 
TEST(LlvmLibcStrsepTest,TokenFound)38 TEST(LlvmLibcStrsepTest, TokenFound) {
39   char s[] = "abacd";
40   char *string = s;
41   EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, "c"), "aba");
42   EXPECT_STREQ(string, "d");
43 }
44 
TEST(LlvmLibcStrsepTest,DelimitersShouldNotBeIncludedInToken)45 TEST(LlvmLibcStrsepTest, DelimitersShouldNotBeIncludedInToken) {
46   char s[] = "__ab__:cd_:_ef_:_";
47   char *string = s;
48   const char *expected[] = {"", "",   "ab", "", "", "cd",   "",
49                             "", "ef", "",   "", "", nullptr};
50   for (int i = 0; expected[i]; i++) {
51     ASSERT_STREQ(LIBC_NAMESPACE::strsep(&string, "_:"), expected[i]);
52   }
53 }
54