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++2a 9 10 // <string_view> 11 12 // constexpr bool contains(string_view x) const noexcept; 13 14 #include <string_view> 15 #include <cassert> 16 17 #include "test_macros.h" 18 19 constexpr bool test() 20 { 21 using SV = std::string_view; 22 23 const char* s = "abcde"; 24 SV sv0; 25 SV sv1 {s + 1, 1}; 26 SV sv2 {s + 1, 2}; 27 SV sv3 {s + 1, 3}; 28 SV sv4 {s + 1, 4}; 29 SV sv5 {s , 5}; 30 SV svNot {"xyz", 3}; 31 SV svNot2 {"bd" , 2}; 32 SV svNot3 {"dcb", 3}; 33 34 ASSERT_NOEXCEPT(sv0.contains(sv0)); 35 36 assert( sv0.contains(sv0)); 37 assert(!sv0.contains(sv1)); 38 39 assert( sv1.contains(sv0)); 40 assert( sv1.contains(sv1)); 41 assert(!sv1.contains(sv2)); 42 assert(!sv1.contains(sv3)); 43 assert(!sv1.contains(sv4)); 44 assert(!sv1.contains(sv5)); 45 assert(!sv1.contains(svNot)); 46 assert(!sv1.contains(svNot2)); 47 assert(!sv1.contains(svNot3)); 48 49 assert( sv3.contains(sv0)); 50 assert( sv3.contains(sv1)); 51 assert( sv3.contains(sv2)); 52 assert( sv3.contains(sv3)); 53 assert(!sv3.contains(sv4)); 54 assert(!sv3.contains(sv5)); 55 assert(!sv3.contains(svNot)); 56 assert(!sv3.contains(svNot2)); 57 assert(!sv3.contains(svNot3)); 58 59 assert( sv5.contains(sv0)); 60 assert( sv5.contains(sv1)); 61 assert( sv5.contains(sv2)); 62 assert( sv5.contains(sv3)); 63 assert( sv5.contains(sv4)); 64 assert( sv5.contains(sv5)); 65 assert(!sv5.contains(svNot)); 66 assert(!sv5.contains(svNot2)); 67 assert(!sv5.contains(svNot3)); 68 69 assert( svNot.contains(sv0)); 70 assert(!svNot.contains(sv1)); 71 assert(!svNot.contains(sv2)); 72 assert(!svNot.contains(sv3)); 73 assert(!svNot.contains(sv4)); 74 assert(!svNot.contains(sv5)); 75 assert( svNot.contains(svNot)); 76 assert(!svNot.contains(svNot2)); 77 assert(!svNot.contains(svNot3)); 78 79 return true; 80 } 81 82 int main(int, char**) 83 { 84 test(); 85 static_assert(test()); 86 87 return 0; 88 } 89