xref: /llvm-project/libcxx/test/std/strings/string.view/string.view.template/contains.string_view.pass.cpp (revision a40bada91aeda276a772acfbcae6e8de26755a11)
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