1*6ac9cb2aSWim Leflere //===----------------------------------------------------------------------===// 2*6ac9cb2aSWim Leflere // 3*6ac9cb2aSWim Leflere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*6ac9cb2aSWim Leflere // See https://llvm.org/LICENSE.txt for license information. 5*6ac9cb2aSWim Leflere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*6ac9cb2aSWim Leflere // 7*6ac9cb2aSWim Leflere //===----------------------------------------------------------------------===// 8*6ac9cb2aSWim Leflere // UNSUPPORTED: c++03, c++11, c++14, c++17, c++2a 9*6ac9cb2aSWim Leflere 10*6ac9cb2aSWim Leflere // <string> 11*6ac9cb2aSWim Leflere 12*6ac9cb2aSWim Leflere // constexpr bool contains(basic_string_view x) const noexcept; 13*6ac9cb2aSWim Leflere 14*6ac9cb2aSWim Leflere #include <string> 15*6ac9cb2aSWim Leflere #include <cassert> 16*6ac9cb2aSWim Leflere 17*6ac9cb2aSWim Leflere #include "test_macros.h" 18*6ac9cb2aSWim Leflere 19*6ac9cb2aSWim Leflere void test() 20*6ac9cb2aSWim Leflere { 21*6ac9cb2aSWim Leflere using S = std::string; 22*6ac9cb2aSWim Leflere using SV = std::string_view; 23*6ac9cb2aSWim Leflere 24*6ac9cb2aSWim Leflere const char* s = "abcde"; 25*6ac9cb2aSWim Leflere S s0; 26*6ac9cb2aSWim Leflere S s1 {s + 1, 1}; 27*6ac9cb2aSWim Leflere S s3 {s + 1, 3}; 28*6ac9cb2aSWim Leflere S s5 {s , 5}; 29*6ac9cb2aSWim Leflere S sNot {"xyz", 3}; 30*6ac9cb2aSWim Leflere 31*6ac9cb2aSWim Leflere SV sv0; 32*6ac9cb2aSWim Leflere SV sv1 {s + 1, 1}; 33*6ac9cb2aSWim Leflere SV sv2 {s + 1, 2}; 34*6ac9cb2aSWim Leflere SV sv3 {s + 1, 3}; 35*6ac9cb2aSWim Leflere SV sv4 {s + 1, 4}; 36*6ac9cb2aSWim Leflere SV sv5 {s , 5}; 37*6ac9cb2aSWim Leflere SV svNot {"xyz", 3}; 38*6ac9cb2aSWim Leflere SV svNot2 {"bd" , 2}; 39*6ac9cb2aSWim Leflere SV svNot3 {"dcb", 3}; 40*6ac9cb2aSWim Leflere 41*6ac9cb2aSWim Leflere ASSERT_NOEXCEPT(s0.contains(sv0)); 42*6ac9cb2aSWim Leflere 43*6ac9cb2aSWim Leflere assert( s0.contains(sv0)); 44*6ac9cb2aSWim Leflere assert(!s0.contains(sv1)); 45*6ac9cb2aSWim Leflere 46*6ac9cb2aSWim Leflere assert( s1.contains(sv0)); 47*6ac9cb2aSWim Leflere assert( s1.contains(sv1)); 48*6ac9cb2aSWim Leflere assert(!s1.contains(sv2)); 49*6ac9cb2aSWim Leflere assert(!s1.contains(sv3)); 50*6ac9cb2aSWim Leflere assert(!s1.contains(sv4)); 51*6ac9cb2aSWim Leflere assert(!s1.contains(sv5)); 52*6ac9cb2aSWim Leflere assert(!s1.contains(svNot)); 53*6ac9cb2aSWim Leflere assert(!s1.contains(svNot2)); 54*6ac9cb2aSWim Leflere assert(!s1.contains(svNot3)); 55*6ac9cb2aSWim Leflere 56*6ac9cb2aSWim Leflere assert( s3.contains(sv0)); 57*6ac9cb2aSWim Leflere assert( s3.contains(sv1)); 58*6ac9cb2aSWim Leflere assert( s3.contains(sv2)); 59*6ac9cb2aSWim Leflere assert( s3.contains(sv3)); 60*6ac9cb2aSWim Leflere assert(!s3.contains(sv4)); 61*6ac9cb2aSWim Leflere assert(!s3.contains(sv5)); 62*6ac9cb2aSWim Leflere assert(!s3.contains(svNot)); 63*6ac9cb2aSWim Leflere assert(!s3.contains(svNot2)); 64*6ac9cb2aSWim Leflere assert(!s3.contains(svNot3)); 65*6ac9cb2aSWim Leflere 66*6ac9cb2aSWim Leflere assert( s5.contains(sv0)); 67*6ac9cb2aSWim Leflere assert( s5.contains(sv1)); 68*6ac9cb2aSWim Leflere assert( s5.contains(sv2)); 69*6ac9cb2aSWim Leflere assert( s5.contains(sv3)); 70*6ac9cb2aSWim Leflere assert( s5.contains(sv4)); 71*6ac9cb2aSWim Leflere assert( s5.contains(sv5)); 72*6ac9cb2aSWim Leflere assert(!s5.contains(svNot)); 73*6ac9cb2aSWim Leflere assert(!s5.contains(svNot2)); 74*6ac9cb2aSWim Leflere assert(!s5.contains(svNot3)); 75*6ac9cb2aSWim Leflere 76*6ac9cb2aSWim Leflere assert( sNot.contains(sv0)); 77*6ac9cb2aSWim Leflere assert(!sNot.contains(sv1)); 78*6ac9cb2aSWim Leflere assert(!sNot.contains(sv2)); 79*6ac9cb2aSWim Leflere assert(!sNot.contains(sv3)); 80*6ac9cb2aSWim Leflere assert(!sNot.contains(sv4)); 81*6ac9cb2aSWim Leflere assert(!sNot.contains(sv5)); 82*6ac9cb2aSWim Leflere assert( sNot.contains(svNot)); 83*6ac9cb2aSWim Leflere assert(!sNot.contains(svNot2)); 84*6ac9cb2aSWim Leflere assert(!sNot.contains(svNot3)); 85*6ac9cb2aSWim Leflere } 86*6ac9cb2aSWim Leflere 87*6ac9cb2aSWim Leflere int main(int, char**) 88*6ac9cb2aSWim Leflere { 89*6ac9cb2aSWim Leflere test(); 90*6ac9cb2aSWim Leflere 91*6ac9cb2aSWim Leflere return 0; 92*6ac9cb2aSWim Leflere } 93