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