brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 619a718 Raw
99 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// UNSUPPORTED: c++03, c++11, c++14, c++17, c++209 10// <string>11 12// constexpr bool contains(basic_string_view x) const noexcept;13 14#include <string>15#include <cassert>16 17#include "test_macros.h"18 19template <class CharT, template <class> class Alloc>20constexpr void test_string() {21  using S  = std::basic_string<CharT, std::char_traits<CharT>, Alloc<CharT> >;22  using SV = std::basic_string_view< CharT, std::char_traits<CharT> >;23 24  const char* s = "abcde";25  S s0;26  S s1{s + 1, 1};27  S s3{s + 1, 3};28  S s5{s, 5};29  S sNot{"xyz", 3};30 31  SV sv0;32  SV sv1{s + 1, 1};33  SV sv2{s + 1, 2};34  SV sv3{s + 1, 3};35  SV sv4{s + 1, 4};36  SV sv5{s, 5};37  SV svNot{"xyz", 3};38  SV svNot2{"bd", 2};39  SV svNot3{"dcb", 3};40 41  ASSERT_NOEXCEPT(s0.contains(sv0));42 43  assert(s0.contains(sv0));44  assert(!s0.contains(sv1));45 46  assert(s1.contains(sv0));47  assert(s1.contains(sv1));48  assert(!s1.contains(sv2));49  assert(!s1.contains(sv3));50  assert(!s1.contains(sv4));51  assert(!s1.contains(sv5));52  assert(!s1.contains(svNot));53  assert(!s1.contains(svNot2));54  assert(!s1.contains(svNot3));55 56  assert(s3.contains(sv0));57  assert(s3.contains(sv1));58  assert(s3.contains(sv2));59  assert(s3.contains(sv3));60  assert(!s3.contains(sv4));61  assert(!s3.contains(sv5));62  assert(!s3.contains(svNot));63  assert(!s3.contains(svNot2));64  assert(!s3.contains(svNot3));65 66  assert(s5.contains(sv0));67  assert(s5.contains(sv1));68  assert(s5.contains(sv2));69  assert(s5.contains(sv3));70  assert(s5.contains(sv4));71  assert(s5.contains(sv5));72  assert(!s5.contains(svNot));73  assert(!s5.contains(svNot2));74  assert(!s5.contains(svNot3));75 76  assert(sNot.contains(sv0));77  assert(!sNot.contains(sv1));78  assert(!sNot.contains(sv2));79  assert(!sNot.contains(sv3));80  assert(!sNot.contains(sv4));81  assert(!sNot.contains(sv5));82  assert(sNot.contains(svNot));83  assert(!sNot.contains(svNot2));84  assert(!sNot.contains(svNot3));85}86 87constexpr bool test() {88  test_string<char, std::allocator>();89 90  return true;91}92 93int main(int, char**) {94  test();95  static_assert(test());96 97  return 0;98}99