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(string_view x) const noexcept;
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 + 1, 1};
276ac9cb2aSWim Leflere     SV sv2 {s + 1, 2};
286ac9cb2aSWim Leflere     SV sv3 {s + 1, 3};
296ac9cb2aSWim Leflere     SV sv4 {s + 1, 4};
306ac9cb2aSWim Leflere     SV sv5 {s    , 5};
316ac9cb2aSWim Leflere     SV svNot  {"xyz", 3};
326ac9cb2aSWim Leflere     SV svNot2 {"bd" , 2};
336ac9cb2aSWim Leflere     SV svNot3 {"dcb", 3};
346ac9cb2aSWim Leflere 
356ac9cb2aSWim Leflere     ASSERT_NOEXCEPT(sv0.contains(sv0));
366ac9cb2aSWim Leflere 
376ac9cb2aSWim Leflere     assert( sv0.contains(sv0));
386ac9cb2aSWim Leflere     assert(!sv0.contains(sv1));
396ac9cb2aSWim Leflere 
406ac9cb2aSWim Leflere     assert( sv1.contains(sv0));
416ac9cb2aSWim Leflere     assert( sv1.contains(sv1));
426ac9cb2aSWim Leflere     assert(!sv1.contains(sv2));
436ac9cb2aSWim Leflere     assert(!sv1.contains(sv3));
446ac9cb2aSWim Leflere     assert(!sv1.contains(sv4));
456ac9cb2aSWim Leflere     assert(!sv1.contains(sv5));
466ac9cb2aSWim Leflere     assert(!sv1.contains(svNot));
476ac9cb2aSWim Leflere     assert(!sv1.contains(svNot2));
486ac9cb2aSWim Leflere     assert(!sv1.contains(svNot3));
496ac9cb2aSWim Leflere 
506ac9cb2aSWim Leflere     assert( sv3.contains(sv0));
516ac9cb2aSWim Leflere     assert( sv3.contains(sv1));
526ac9cb2aSWim Leflere     assert( sv3.contains(sv2));
536ac9cb2aSWim Leflere     assert( sv3.contains(sv3));
546ac9cb2aSWim Leflere     assert(!sv3.contains(sv4));
556ac9cb2aSWim Leflere     assert(!sv3.contains(sv5));
566ac9cb2aSWim Leflere     assert(!sv3.contains(svNot));
576ac9cb2aSWim Leflere     assert(!sv3.contains(svNot2));
586ac9cb2aSWim Leflere     assert(!sv3.contains(svNot3));
596ac9cb2aSWim Leflere 
606ac9cb2aSWim Leflere     assert( sv5.contains(sv0));
616ac9cb2aSWim Leflere     assert( sv5.contains(sv1));
626ac9cb2aSWim Leflere     assert( sv5.contains(sv2));
636ac9cb2aSWim Leflere     assert( sv5.contains(sv3));
646ac9cb2aSWim Leflere     assert( sv5.contains(sv4));
656ac9cb2aSWim Leflere     assert( sv5.contains(sv5));
666ac9cb2aSWim Leflere     assert(!sv5.contains(svNot));
676ac9cb2aSWim Leflere     assert(!sv5.contains(svNot2));
686ac9cb2aSWim Leflere     assert(!sv5.contains(svNot3));
696ac9cb2aSWim Leflere 
706ac9cb2aSWim Leflere     assert( svNot.contains(sv0));
716ac9cb2aSWim Leflere     assert(!svNot.contains(sv1));
726ac9cb2aSWim Leflere     assert(!svNot.contains(sv2));
736ac9cb2aSWim Leflere     assert(!svNot.contains(sv3));
746ac9cb2aSWim Leflere     assert(!svNot.contains(sv4));
756ac9cb2aSWim Leflere     assert(!svNot.contains(sv5));
766ac9cb2aSWim Leflere     assert( svNot.contains(svNot));
776ac9cb2aSWim Leflere     assert(!svNot.contains(svNot2));
786ac9cb2aSWim Leflere     assert(!svNot.contains(svNot3));
796ac9cb2aSWim Leflere 
806ac9cb2aSWim Leflere     return true;
816ac9cb2aSWim Leflere }
826ac9cb2aSWim Leflere 
main(int,char **)836ac9cb2aSWim Leflere int main(int, char**)
846ac9cb2aSWim Leflere {
856ac9cb2aSWim Leflere     test();
866ac9cb2aSWim Leflere     static_assert(test());
876ac9cb2aSWim Leflere 
886ac9cb2aSWim Leflere     return 0;
896ac9cb2aSWim Leflere }
90