16ac9cb2aSWim Leflere //===----------------------------------------------------------------------===//
26ac9cb2aSWim Leflere //
36ac9cb2aSWim Leflere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
46ac9cb2aSWim Leflere // See https://llvm.org/LICENSE.txt for license information.
56ac9cb2aSWim Leflere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66ac9cb2aSWim Leflere //
76ac9cb2aSWim Leflere //===----------------------------------------------------------------------===//
8*02d11757SLouis Dionne
98508b1c1SLouis Dionne // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
106ac9cb2aSWim Leflere
116ac9cb2aSWim Leflere // <string_view>
126ac9cb2aSWim Leflere
136ac9cb2aSWim Leflere // constexpr bool contains(const CharT *x) const;
146ac9cb2aSWim Leflere
156ac9cb2aSWim Leflere #include <string_view>
166ac9cb2aSWim Leflere #include <cassert>
176ac9cb2aSWim Leflere
186ac9cb2aSWim Leflere #include "test_macros.h"
196ac9cb2aSWim Leflere
test()206ac9cb2aSWim Leflere constexpr bool test()
216ac9cb2aSWim Leflere {
226ac9cb2aSWim Leflere using SV = std::string_view;
236ac9cb2aSWim Leflere
246ac9cb2aSWim Leflere const char* s = "abcde";
256ac9cb2aSWim Leflere SV sv0;
266ac9cb2aSWim Leflere SV sv1 {s + 4, 1};
276ac9cb2aSWim Leflere SV sv3 {s + 2, 3};
286ac9cb2aSWim Leflere SV svNot {"xyz", 3};
296ac9cb2aSWim Leflere
306ac9cb2aSWim Leflere assert( sv0.contains(""));
316ac9cb2aSWim Leflere assert(!sv0.contains("e"));
326ac9cb2aSWim Leflere
336ac9cb2aSWim Leflere assert( sv1.contains(""));
346ac9cb2aSWim Leflere assert(!sv1.contains("d"));
356ac9cb2aSWim Leflere assert( sv1.contains("e"));
366ac9cb2aSWim Leflere assert(!sv1.contains("de"));
376ac9cb2aSWim Leflere assert(!sv1.contains("cd"));
386ac9cb2aSWim Leflere assert(!sv1.contains("cde"));
396ac9cb2aSWim Leflere assert(!sv1.contains("bcde"));
406ac9cb2aSWim Leflere assert(!sv1.contains("abcde"));
416ac9cb2aSWim Leflere assert(!sv1.contains("xyz"));
426ac9cb2aSWim Leflere
436ac9cb2aSWim Leflere assert( sv3.contains(""));
446ac9cb2aSWim Leflere assert( sv3.contains("d"));
456ac9cb2aSWim Leflere assert( sv3.contains("e"));
466ac9cb2aSWim Leflere assert( sv3.contains("de"));
476ac9cb2aSWim Leflere assert( sv3.contains("cd"));
486ac9cb2aSWim Leflere assert(!sv3.contains("ce"));
496ac9cb2aSWim Leflere assert( sv3.contains("cde"));
506ac9cb2aSWim Leflere assert(!sv3.contains("edc"));
516ac9cb2aSWim Leflere assert(!sv3.contains("bcde"));
526ac9cb2aSWim Leflere assert(!sv3.contains("abcde"));
536ac9cb2aSWim Leflere assert(!sv3.contains("xyz"));
546ac9cb2aSWim Leflere
556ac9cb2aSWim Leflere assert( svNot.contains(""));
566ac9cb2aSWim Leflere assert(!svNot.contains("d"));
576ac9cb2aSWim Leflere assert(!svNot.contains("e"));
586ac9cb2aSWim Leflere assert(!svNot.contains("de"));
596ac9cb2aSWim Leflere assert(!svNot.contains("cd"));
606ac9cb2aSWim Leflere assert(!svNot.contains("cde"));
616ac9cb2aSWim Leflere assert(!svNot.contains("bcde"));
626ac9cb2aSWim Leflere assert(!svNot.contains("abcde"));
636ac9cb2aSWim Leflere assert( svNot.contains("xyz"));
646ac9cb2aSWim Leflere assert(!svNot.contains("zyx"));
656ac9cb2aSWim Leflere
666ac9cb2aSWim Leflere return true;
676ac9cb2aSWim Leflere }
686ac9cb2aSWim Leflere
main(int,char **)696ac9cb2aSWim Leflere int main(int, char**)
706ac9cb2aSWim Leflere {
716ac9cb2aSWim Leflere test();
726ac9cb2aSWim Leflere static_assert(test());
736ac9cb2aSWim Leflere
746ac9cb2aSWim Leflere return 0;
756ac9cb2aSWim Leflere }
76