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 
9 // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
10 
11 // <string_view>
12 
13 //   constexpr bool contains(string_view x) const noexcept;
14 
15 #include <string_view>
16 #include <cassert>
17 
18 #include "test_macros.h"
19 
test()20 constexpr bool test()
21 {
22     using SV = std::string_view;
23 
24     const char* s = "abcde";
25     SV sv0;
26     SV sv1 {s + 1, 1};
27     SV sv2 {s + 1, 2};
28     SV sv3 {s + 1, 3};
29     SV sv4 {s + 1, 4};
30     SV sv5 {s    , 5};
31     SV svNot  {"xyz", 3};
32     SV svNot2 {"bd" , 2};
33     SV svNot3 {"dcb", 3};
34 
35     ASSERT_NOEXCEPT(sv0.contains(sv0));
36 
37     assert( sv0.contains(sv0));
38     assert(!sv0.contains(sv1));
39 
40     assert( sv1.contains(sv0));
41     assert( sv1.contains(sv1));
42     assert(!sv1.contains(sv2));
43     assert(!sv1.contains(sv3));
44     assert(!sv1.contains(sv4));
45     assert(!sv1.contains(sv5));
46     assert(!sv1.contains(svNot));
47     assert(!sv1.contains(svNot2));
48     assert(!sv1.contains(svNot3));
49 
50     assert( sv3.contains(sv0));
51     assert( sv3.contains(sv1));
52     assert( sv3.contains(sv2));
53     assert( sv3.contains(sv3));
54     assert(!sv3.contains(sv4));
55     assert(!sv3.contains(sv5));
56     assert(!sv3.contains(svNot));
57     assert(!sv3.contains(svNot2));
58     assert(!sv3.contains(svNot3));
59 
60     assert( sv5.contains(sv0));
61     assert( sv5.contains(sv1));
62     assert( sv5.contains(sv2));
63     assert( sv5.contains(sv3));
64     assert( sv5.contains(sv4));
65     assert( sv5.contains(sv5));
66     assert(!sv5.contains(svNot));
67     assert(!sv5.contains(svNot2));
68     assert(!sv5.contains(svNot3));
69 
70     assert( svNot.contains(sv0));
71     assert(!svNot.contains(sv1));
72     assert(!svNot.contains(sv2));
73     assert(!svNot.contains(sv3));
74     assert(!svNot.contains(sv4));
75     assert(!svNot.contains(sv5));
76     assert( svNot.contains(svNot));
77     assert(!svNot.contains(svNot2));
78     assert(!svNot.contains(svNot3));
79 
80     return true;
81 }
82 
main(int,char **)83 int main(int, char**)
84 {
85     test();
86     static_assert(test());
87 
88     return 0;
89 }
90