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 "hdr/signal_macros.h"
10#include "src/string/strsep.h"
11#include "test/UnitTest/Test.h"
12
13TEST(LlvmLibcStrsepTest, NullSrc) {
14 char *string = nullptr;
15 EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, ""), nullptr);
16}
17
18TEST(LlvmLibcStrsepTest, NoTokenFound) {
19 {
20 char s[] = "";
21 char *string = s, *orig = s;
22 EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, ""), nullptr);
23 EXPECT_EQ(orig, string);
24 }
25 {
26 char s[] = "abcde";
27 char *string = s, *orig = s;
28 EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, ""), orig);
29 EXPECT_EQ(string, orig + 5);
30 }
31 {
32 char s[] = "abcde";
33 char *string = s, *orig = s;
34 EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, "fghijk"), orig);
35 EXPECT_EQ(string, orig + 5);
36 }
37}
38
39TEST(LlvmLibcStrsepTest, TokenFound) {
40 char s[] = "abacd";
41 char *string = s;
42 EXPECT_STREQ(LIBC_NAMESPACE::strsep(&string, "c"), "aba");
43 EXPECT_STREQ(string, "d");
44}
45
46TEST(LlvmLibcStrsepTest, DelimitersShouldNotBeIncludedInToken) {
47 char s[] = "__ab__:cd_:_ef_:_";
48 char *string = s;
49 const char *expected[] = {"", "", "ab", "", "", "cd", "",
50 "", "ef", "", "", "", nullptr};
51 for (int i = 0; expected[i]; i++) {
52 ASSERT_STREQ(LIBC_NAMESPACE::strsep(&string, "_:"), expected[i]);
53 }
54}
55
56#if defined(LIBC_ADD_NULL_CHECKS) && !defined(LIBC_HAS_SANITIZER)
57
58TEST(LlvmLibcStrsepTest, CrashOnNullPtr) {
59 ASSERT_DEATH([]() { LIBC_NAMESPACE::strsep(nullptr, nullptr); },
60 WITH_SIGNAL(-1));
61}
62
63#endif // defined(LIBC_ADD_NULL_CHECKS) && !defined(LIBC_HAS_SANITIZER)
64

Provided by KDAB

Privacy Policy
Update your C++ knowledge – Modern C++11/14/17 Training
Find out more

source code of libc/test/src/string/strsep_test.cpp