1 //===----------------------------------------------------------------------===// 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 // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20 9 10 // <string> 11 12 // constexpr bool contains(const CharT *x) const; 13 14 #include <string> 15 #include <cassert> 16 17 #include "test_macros.h" 18 19 constexpr bool test() 20 { 21 using S = std::string; 22 23 const char* s = "abcde"; 24 S s0; 25 S s1 {s + 4, 1}; 26 S s3 {s + 2, 3}; 27 S sNot {"xyz", 3}; 28 29 assert(s0.contains("")); 30 assert(!s0.contains("e")); 31 32 assert( s1.contains("")); 33 assert(!s1.contains("d")); 34 assert( s1.contains("e")); 35 assert(!s1.contains("de")); 36 assert(!s1.contains("cd")); 37 assert(!s1.contains("cde")); 38 assert(!s1.contains("bcde")); 39 assert(!s1.contains("abcde")); 40 assert(!s1.contains("xyz")); 41 42 assert( s3.contains("")); 43 assert( s3.contains("d")); 44 assert( s3.contains("e")); 45 assert( s3.contains("de")); 46 assert( s3.contains("cd")); 47 assert(!s3.contains("ce")); 48 assert( s3.contains("cde")); 49 assert(!s3.contains("edc")); 50 assert(!s3.contains("bcde")); 51 assert(!s3.contains("abcde")); 52 assert(!s3.contains("xyz")); 53 54 assert( sNot.contains("")); 55 assert(!sNot.contains("d")); 56 assert(!sNot.contains("e")); 57 assert(!sNot.contains("de")); 58 assert(!sNot.contains("cd")); 59 assert(!sNot.contains("cde")); 60 assert(!sNot.contains("bcde")); 61 assert(!sNot.contains("abcde")); 62 assert( sNot.contains("xyz")); 63 assert(!sNot.contains("zyx")); 64 65 return true; 66 } 67 68 int main(int, char**) 69 { 70 test(); 71 static_assert(test()); 72 73 return 0; 74 } 75