brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 82c7320 Raw
106 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++1710 11// <string_view>12 13//   constexpr bool ends_with(string_view x) const noexcept;14 15#include <string_view>16#include <cassert>17 18#include "test_macros.h"19#include "constexpr_char_traits.h"20 21int main(int, char**) {22  {23    typedef std::string_view SV;24    const char* s = "abcde";25    SV sv0;26    SV sv1{s + 4, 1};27    SV sv2{s + 3, 2};28    SV sv3{s + 2, 3};29    SV sv4{s + 1, 4};30    SV sv5{s, 5};31    SV svNot{"def", 3};32 33    ASSERT_NOEXCEPT(sv0.ends_with(sv0));34 35    assert(sv0.ends_with(sv0));36    assert(!sv0.ends_with(sv1));37 38    assert(sv1.ends_with(sv0));39    assert(sv1.ends_with(sv1));40    assert(!sv1.ends_with(sv2));41    assert(!sv1.ends_with(sv3));42    assert(!sv1.ends_with(sv4));43    assert(!sv1.ends_with(sv5));44    assert(!sv1.ends_with(svNot));45 46    assert(sv2.ends_with(sv0));47    assert(sv2.ends_with(sv1));48    assert(sv2.ends_with(sv2));49    assert(!sv2.ends_with(sv3));50    assert(!sv2.ends_with(sv4));51    assert(!sv2.ends_with(sv5));52    assert(!sv2.ends_with(svNot));53 54    assert(svNot.ends_with(sv0));55    assert(!svNot.ends_with(sv1));56    assert(!svNot.ends_with(sv2));57    assert(!svNot.ends_with(sv3));58    assert(!svNot.ends_with(sv4));59    assert(!svNot.ends_with(sv5));60    assert(svNot.ends_with(svNot));61  }62 63#if TEST_STD_VER > 1164  {65    typedef std::basic_string_view<char, constexpr_char_traits<char>> SV;66    constexpr const char* s = "abcde";67    constexpr SV sv0{};68    constexpr SV sv1{s + 4, 1};69    constexpr SV sv2{s + 3, 2};70    constexpr SV sv3{s + 2, 3};71    constexpr SV sv4{s + 1, 4};72    constexpr SV sv5{s, 5};73    constexpr SV svNot{"def", 3};74 75    static_assert(sv0.ends_with(sv0), "");76    static_assert(!sv0.ends_with(sv1), "");77 78    static_assert(sv1.ends_with(sv0), "");79    static_assert(sv1.ends_with(sv1), "");80    static_assert(!sv1.ends_with(sv2), "");81    static_assert(!sv1.ends_with(sv3), "");82    static_assert(!sv1.ends_with(sv4), "");83    static_assert(!sv1.ends_with(sv5), "");84    static_assert(!sv1.ends_with(svNot), "");85 86    static_assert(sv2.ends_with(sv0), "");87    static_assert(sv2.ends_with(sv1), "");88    static_assert(sv2.ends_with(sv2), "");89    static_assert(!sv2.ends_with(sv3), "");90    static_assert(!sv2.ends_with(sv4), "");91    static_assert(!sv2.ends_with(sv5), "");92    static_assert(!sv2.ends_with(svNot), "");93 94    static_assert(svNot.ends_with(sv0), "");95    static_assert(!svNot.ends_with(sv1), "");96    static_assert(!svNot.ends_with(sv2), "");97    static_assert(!svNot.ends_with(sv3), "");98    static_assert(!svNot.ends_with(sv4), "");99    static_assert(!svNot.ends_with(sv5), "");100    static_assert(svNot.ends_with(svNot), "");101  }102#endif103 104  return 0;105}106