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

source code of libcxx/test/std/strings/string.view/string.view.template/contains.string_view.pass.cpp