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 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
main(int,char **)82 int main(int, char**) {
83 test();
84 static_assert(test());
85
86 return 0;
87 }
88