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