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