88 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: c++03, c++11, c++14, c++17, c++2010 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