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