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(const CharT *x) const;
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 
23*6ac9cb2aSWim Leflere     const char* s = "abcde";
24*6ac9cb2aSWim Leflere     S s0;
25*6ac9cb2aSWim Leflere     S s1 {s + 4, 1};
26*6ac9cb2aSWim Leflere     S s3 {s + 2, 3};
27*6ac9cb2aSWim Leflere     S sNot {"xyz", 3};
28*6ac9cb2aSWim Leflere 
29*6ac9cb2aSWim Leflere     assert(s0.contains(""));
30*6ac9cb2aSWim Leflere     assert(!s0.contains("e"));
31*6ac9cb2aSWim Leflere 
32*6ac9cb2aSWim Leflere     assert( s1.contains(""));
33*6ac9cb2aSWim Leflere     assert(!s1.contains("d"));
34*6ac9cb2aSWim Leflere     assert( s1.contains("e"));
35*6ac9cb2aSWim Leflere     assert(!s1.contains("de"));
36*6ac9cb2aSWim Leflere     assert(!s1.contains("cd"));
37*6ac9cb2aSWim Leflere     assert(!s1.contains("cde"));
38*6ac9cb2aSWim Leflere     assert(!s1.contains("bcde"));
39*6ac9cb2aSWim Leflere     assert(!s1.contains("abcde"));
40*6ac9cb2aSWim Leflere     assert(!s1.contains("xyz"));
41*6ac9cb2aSWim Leflere 
42*6ac9cb2aSWim Leflere     assert( s3.contains(""));
43*6ac9cb2aSWim Leflere     assert( s3.contains("d"));
44*6ac9cb2aSWim Leflere     assert( s3.contains("e"));
45*6ac9cb2aSWim Leflere     assert( s3.contains("de"));
46*6ac9cb2aSWim Leflere     assert( s3.contains("cd"));
47*6ac9cb2aSWim Leflere     assert(!s3.contains("ce"));
48*6ac9cb2aSWim Leflere     assert( s3.contains("cde"));
49*6ac9cb2aSWim Leflere     assert(!s3.contains("edc"));
50*6ac9cb2aSWim Leflere     assert(!s3.contains("bcde"));
51*6ac9cb2aSWim Leflere     assert(!s3.contains("abcde"));
52*6ac9cb2aSWim Leflere     assert(!s3.contains("xyz"));
53*6ac9cb2aSWim Leflere 
54*6ac9cb2aSWim Leflere     assert( sNot.contains(""));
55*6ac9cb2aSWim Leflere     assert(!sNot.contains("d"));
56*6ac9cb2aSWim Leflere     assert(!sNot.contains("e"));
57*6ac9cb2aSWim Leflere     assert(!sNot.contains("de"));
58*6ac9cb2aSWim Leflere     assert(!sNot.contains("cd"));
59*6ac9cb2aSWim Leflere     assert(!sNot.contains("cde"));
60*6ac9cb2aSWim Leflere     assert(!sNot.contains("bcde"));
61*6ac9cb2aSWim Leflere     assert(!sNot.contains("abcde"));
62*6ac9cb2aSWim Leflere     assert( sNot.contains("xyz"));
63*6ac9cb2aSWim Leflere     assert(!sNot.contains("zyx"));
64*6ac9cb2aSWim Leflere }
65*6ac9cb2aSWim Leflere 
66*6ac9cb2aSWim Leflere int main(int, char**)
67*6ac9cb2aSWim Leflere {
68*6ac9cb2aSWim Leflere     test();
69*6ac9cb2aSWim Leflere 
70*6ac9cb2aSWim Leflere     return 0;
71*6ac9cb2aSWim Leflere }
72