16ac9cb2aSWim Leflere //===----------------------------------------------------------------------===// 26ac9cb2aSWim Leflere // 36ac9cb2aSWim Leflere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 46ac9cb2aSWim Leflere // See https://llvm.org/LICENSE.txt for license information. 56ac9cb2aSWim Leflere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 66ac9cb2aSWim Leflere // 76ac9cb2aSWim Leflere //===----------------------------------------------------------------------===// 88508b1c1SLouis Dionne // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20 96ac9cb2aSWim Leflere 106ac9cb2aSWim Leflere // <string> 116ac9cb2aSWim Leflere 126ac9cb2aSWim Leflere // constexpr bool contains(const CharT *x) const; 136ac9cb2aSWim Leflere 146ac9cb2aSWim Leflere #include <string> 156ac9cb2aSWim Leflere #include <cassert> 166ac9cb2aSWim Leflere 176ac9cb2aSWim Leflere #include "test_macros.h" 186ac9cb2aSWim Leflere 19*85e9b268SNikolas Klauser bool test() 206ac9cb2aSWim Leflere { 216ac9cb2aSWim Leflere using S = std::string; 226ac9cb2aSWim Leflere 236ac9cb2aSWim Leflere const char* s = "abcde"; 246ac9cb2aSWim Leflere S s0; 256ac9cb2aSWim Leflere S s1 {s + 4, 1}; 266ac9cb2aSWim Leflere S s3 {s + 2, 3}; 276ac9cb2aSWim Leflere S sNot {"xyz", 3}; 286ac9cb2aSWim Leflere 296ac9cb2aSWim Leflere assert(s0.contains("")); 306ac9cb2aSWim Leflere assert(!s0.contains("e")); 316ac9cb2aSWim Leflere 326ac9cb2aSWim Leflere assert( s1.contains("")); 336ac9cb2aSWim Leflere assert(!s1.contains("d")); 346ac9cb2aSWim Leflere assert( s1.contains("e")); 356ac9cb2aSWim Leflere assert(!s1.contains("de")); 366ac9cb2aSWim Leflere assert(!s1.contains("cd")); 376ac9cb2aSWim Leflere assert(!s1.contains("cde")); 386ac9cb2aSWim Leflere assert(!s1.contains("bcde")); 396ac9cb2aSWim Leflere assert(!s1.contains("abcde")); 406ac9cb2aSWim Leflere assert(!s1.contains("xyz")); 416ac9cb2aSWim Leflere 426ac9cb2aSWim Leflere assert( s3.contains("")); 436ac9cb2aSWim Leflere assert( s3.contains("d")); 446ac9cb2aSWim Leflere assert( s3.contains("e")); 456ac9cb2aSWim Leflere assert( s3.contains("de")); 466ac9cb2aSWim Leflere assert( s3.contains("cd")); 476ac9cb2aSWim Leflere assert(!s3.contains("ce")); 486ac9cb2aSWim Leflere assert( s3.contains("cde")); 496ac9cb2aSWim Leflere assert(!s3.contains("edc")); 506ac9cb2aSWim Leflere assert(!s3.contains("bcde")); 516ac9cb2aSWim Leflere assert(!s3.contains("abcde")); 526ac9cb2aSWim Leflere assert(!s3.contains("xyz")); 536ac9cb2aSWim Leflere 546ac9cb2aSWim Leflere assert( sNot.contains("")); 556ac9cb2aSWim Leflere assert(!sNot.contains("d")); 566ac9cb2aSWim Leflere assert(!sNot.contains("e")); 576ac9cb2aSWim Leflere assert(!sNot.contains("de")); 586ac9cb2aSWim Leflere assert(!sNot.contains("cd")); 596ac9cb2aSWim Leflere assert(!sNot.contains("cde")); 606ac9cb2aSWim Leflere assert(!sNot.contains("bcde")); 616ac9cb2aSWim Leflere assert(!sNot.contains("abcde")); 626ac9cb2aSWim Leflere assert( sNot.contains("xyz")); 636ac9cb2aSWim Leflere assert(!sNot.contains("zyx")); 64*85e9b268SNikolas Klauser 65*85e9b268SNikolas Klauser return true; 666ac9cb2aSWim Leflere } 676ac9cb2aSWim Leflere 686ac9cb2aSWim Leflere int main(int, char**) 696ac9cb2aSWim Leflere { 706ac9cb2aSWim Leflere test(); 71c515b652SNikolas Klauser #if TEST_STD_VER > 17 72c515b652SNikolas Klauser // static_assert(test()); 73c515b652SNikolas Klauser #endif 746ac9cb2aSWim Leflere 756ac9cb2aSWim Leflere return 0; 766ac9cb2aSWim Leflere } 77