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(string_view x) const noexcept; 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 + 1, 1}; 27 SV sv2 {s + 1, 2}; 28 SV sv3 {s + 1, 3}; 29 SV sv4 {s + 1, 4}; 30 SV sv5 {s , 5}; 31 SV svNot {"xyz", 3}; 32 SV svNot2 {"bd" , 2}; 33 SV svNot3 {"dcb", 3}; 34 35 ASSERT_NOEXCEPT(sv0.contains(sv0)); 36 37 assert( sv0.contains(sv0)); 38 assert(!sv0.contains(sv1)); 39 40 assert( sv1.contains(sv0)); 41 assert( sv1.contains(sv1)); 42 assert(!sv1.contains(sv2)); 43 assert(!sv1.contains(sv3)); 44 assert(!sv1.contains(sv4)); 45 assert(!sv1.contains(sv5)); 46 assert(!sv1.contains(svNot)); 47 assert(!sv1.contains(svNot2)); 48 assert(!sv1.contains(svNot3)); 49 50 assert( sv3.contains(sv0)); 51 assert( sv3.contains(sv1)); 52 assert( sv3.contains(sv2)); 53 assert( sv3.contains(sv3)); 54 assert(!sv3.contains(sv4)); 55 assert(!sv3.contains(sv5)); 56 assert(!sv3.contains(svNot)); 57 assert(!sv3.contains(svNot2)); 58 assert(!sv3.contains(svNot3)); 59 60 assert( sv5.contains(sv0)); 61 assert( sv5.contains(sv1)); 62 assert( sv5.contains(sv2)); 63 assert( sv5.contains(sv3)); 64 assert( sv5.contains(sv4)); 65 assert( sv5.contains(sv5)); 66 assert(!sv5.contains(svNot)); 67 assert(!sv5.contains(svNot2)); 68 assert(!sv5.contains(svNot3)); 69 70 assert( svNot.contains(sv0)); 71 assert(!svNot.contains(sv1)); 72 assert(!svNot.contains(sv2)); 73 assert(!svNot.contains(sv3)); 74 assert(!svNot.contains(sv4)); 75 assert(!svNot.contains(sv5)); 76 assert( svNot.contains(svNot)); 77 assert(!svNot.contains(svNot2)); 78 assert(!svNot.contains(svNot3)); 79 80 return true; 81 } 82 83 int main(int, char**) 84 { 85 test(); 86 static_assert(test()); 87 88 return 0; 89 } 90