brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · c09afba Raw
83 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++179 10// <string>11 12// constexpr bool starts_with(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  const char* s = "abcde";24 25  S s0;26  S s1{s, 1};27  S s2{s, 2};28  //  S   s3  { s, 3 };29  //  S   s4  { s, 4 };30  //  S   s5  { s, 5 };31  S sNot{"def", 3};32 33  SV sv0;34  SV sv1{s, 1};35  SV sv2{s, 2};36  SV sv3{s, 3};37  SV sv4{s, 4};38  SV sv5{s, 5};39  SV svNot{"def", 3};40 41  ASSERT_NOEXCEPT(s0.starts_with(sv0));42 43  assert(s0.starts_with(sv0));44  assert(!s0.starts_with(sv1));45 46  assert(s1.starts_with(sv0));47  assert(s1.starts_with(sv1));48  assert(!s1.starts_with(sv2));49  assert(!s1.starts_with(sv3));50  assert(!s1.starts_with(sv4));51  assert(!s1.starts_with(sv5));52  assert(!s1.starts_with(svNot));53 54  assert(s2.starts_with(sv0));55  assert(s2.starts_with(sv1));56  assert(s2.starts_with(sv2));57  assert(!s2.starts_with(sv3));58  assert(!s2.starts_with(sv4));59  assert(!s2.starts_with(sv5));60  assert(!s2.starts_with(svNot));61 62  assert(sNot.starts_with(sv0));63  assert(!sNot.starts_with(sv1));64  assert(!sNot.starts_with(sv2));65  assert(!sNot.starts_with(sv3));66  assert(!sNot.starts_with(sv4));67  assert(!sNot.starts_with(sv5));68  assert(sNot.starts_with(svNot));69}70 71constexpr bool test() {72  test_string<char, std::allocator>();73 74  return true;75}76 77int main(int, char**) {78  test();79  static_assert(test());80 81  return 0;82}83