xref: /llvm-project/libc/test/src/string/strpbrk_test.cpp (revision b6bc9d72f65a5086f310f321e969d96e9a559e75)
1dc13a9a7Scgyurgyik //===-- Unittests for strpbrk ---------------------------------------------===//
2dc13a9a7Scgyurgyik //
3dc13a9a7Scgyurgyik // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4dc13a9a7Scgyurgyik // See https://llvm.org/LICENSE.txt for license information.
5dc13a9a7Scgyurgyik // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6dc13a9a7Scgyurgyik //
7dc13a9a7Scgyurgyik //===----------------------------------------------------------------------===//
8dc13a9a7Scgyurgyik 
9dc13a9a7Scgyurgyik #include "src/string/strpbrk.h"
10dc13a9a7Scgyurgyik 
11af1315c2SSiva Chandra Reddy #include "test/UnitTest/Test.h"
12dc13a9a7Scgyurgyik 
TEST(LlvmLibcStrPBrkTest,EmptyStringShouldReturnNullptr)131df0dbfcSMichael Jones TEST(LlvmLibcStrPBrkTest, EmptyStringShouldReturnNullptr) {
14dc13a9a7Scgyurgyik   // The search should not include the null terminator.
15*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk("", ""), nullptr);
16*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk("_", ""), nullptr);
17*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk("", "_"), nullptr);
18dc13a9a7Scgyurgyik }
19dc13a9a7Scgyurgyik 
TEST(LlvmLibcStrPBrkTest,ShouldNotFindAnythingAfterNullTerminator)201df0dbfcSMichael Jones TEST(LlvmLibcStrPBrkTest, ShouldNotFindAnythingAfterNullTerminator) {
21dc13a9a7Scgyurgyik   const char src[4] = {'a', 'b', '\0', 'c'};
22*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "c"), nullptr);
23dc13a9a7Scgyurgyik }
24dc13a9a7Scgyurgyik 
TEST(LlvmLibcStrPBrkTest,ShouldReturnNullptrIfNoCharactersFound)251df0dbfcSMichael Jones TEST(LlvmLibcStrPBrkTest, ShouldReturnNullptrIfNoCharactersFound) {
26*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk("12345", "abcdef"), nullptr);
27dc13a9a7Scgyurgyik }
28dc13a9a7Scgyurgyik 
TEST(LlvmLibcStrPBrkTest,FindsFirstCharacter)291df0dbfcSMichael Jones TEST(LlvmLibcStrPBrkTest, FindsFirstCharacter) {
30dc13a9a7Scgyurgyik   const char *src = "12345";
31*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "1"), "12345");
32*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "-1"), "12345");
33*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "1_"), "12345");
34*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "f1_"), "12345");
35dc13a9a7Scgyurgyik   ASSERT_STREQ(src, "12345");
36dc13a9a7Scgyurgyik }
37dc13a9a7Scgyurgyik 
TEST(LlvmLibcStrPBrkTest,FindsMiddleCharacter)381df0dbfcSMichael Jones TEST(LlvmLibcStrPBrkTest, FindsMiddleCharacter) {
39dc13a9a7Scgyurgyik   const char *src = "12345";
40*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "3"), "345");
41*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "?3"), "345");
42*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "3F"), "345");
43*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "z3_"), "345");
44dc13a9a7Scgyurgyik   ASSERT_STREQ(src, "12345");
45dc13a9a7Scgyurgyik }
46dc13a9a7Scgyurgyik 
TEST(LlvmLibcStrPBrkTest,FindsLastCharacter)471df0dbfcSMichael Jones TEST(LlvmLibcStrPBrkTest, FindsLastCharacter) {
48dc13a9a7Scgyurgyik   const char *src = "12345";
49*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "5"), "5");
50*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "r5"), "5");
51*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "59"), "5");
52*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk(src, "n5_"), "5");
53dc13a9a7Scgyurgyik   ASSERT_STREQ(src, "12345");
54dc13a9a7Scgyurgyik }
55dc13a9a7Scgyurgyik 
TEST(LlvmLibcStrPBrkTest,FindsFirstOfRepeated)561df0dbfcSMichael Jones TEST(LlvmLibcStrPBrkTest, FindsFirstOfRepeated) {
57*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk("A,B,C,D", ","), ",B,C,D");
58dc13a9a7Scgyurgyik }
59dc13a9a7Scgyurgyik 
TEST(LlvmLibcStrPBrkTest,FindsFirstInBreakset)601df0dbfcSMichael Jones TEST(LlvmLibcStrPBrkTest, FindsFirstInBreakset) {
61*b6bc9d72SGuillaume Chatelet   EXPECT_STREQ(LIBC_NAMESPACE::strpbrk("12345", "34"), "345");
62dc13a9a7Scgyurgyik }
63