brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 1afd481 Raw
96 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// <vector>10// vector<bool>11 12// iterator erase(const_iterator first, const_iterator last);13 14#include <vector>15#include <cassert>16#include <iterator>17 18#include "test_macros.h"19#include "min_allocator.h"20 21TEST_CONSTEXPR_CXX20 bool tests() {22  bool a1[] = {1, 0, 1};23  {24    std::vector<bool> l1(a1, a1 + 3);25    std::vector<bool>::iterator i = l1.erase(l1.cbegin(), l1.cbegin());26    assert(l1.size() == 3);27    assert(std::distance(l1.cbegin(), l1.cend()) == 3);28    assert(i == l1.begin());29  }30  {31    std::vector<bool> l1(a1, a1 + 3);32    std::vector<bool>::iterator i = l1.erase(l1.cbegin(), std::next(l1.cbegin()));33    assert(l1.size() == 2);34    assert(std::distance(l1.cbegin(), l1.cend()) == 2);35    assert(i == l1.begin());36    assert(l1 == std::vector<bool>(a1 + 1, a1 + 3));37  }38  {39    std::vector<bool> l1(a1, a1 + 3);40    std::vector<bool>::iterator i = l1.erase(l1.cbegin(), std::next(l1.cbegin(), 2));41    assert(l1.size() == 1);42    assert(std::distance(l1.cbegin(), l1.cend()) == 1);43    assert(i == l1.begin());44    assert(l1 == std::vector<bool>(a1 + 2, a1 + 3));45  }46  {47    std::vector<bool> l1(a1, a1 + 3);48    std::vector<bool>::iterator i = l1.erase(l1.cbegin(), std::next(l1.cbegin(), 3));49    assert(l1.size() == 0);50    assert(std::distance(l1.cbegin(), l1.cend()) == 0);51    assert(i == l1.begin());52  }53#if TEST_STD_VER >= 1154  {55    std::vector<bool, min_allocator<bool>> l1(a1, a1 + 3);56    std::vector<bool, min_allocator<bool>>::iterator i = l1.erase(l1.cbegin(), l1.cbegin());57    assert(l1.size() == 3);58    assert(std::distance(l1.cbegin(), l1.cend()) == 3);59    assert(i == l1.begin());60  }61  {62    std::vector<bool, min_allocator<bool>> l1(a1, a1 + 3);63    std::vector<bool, min_allocator<bool>>::iterator i = l1.erase(l1.cbegin(), std::next(l1.cbegin()));64    assert(l1.size() == 2);65    assert(std::distance(l1.cbegin(), l1.cend()) == 2);66    assert(i == l1.begin());67    assert((l1 == std::vector<bool, min_allocator<bool>>(a1 + 1, a1 + 3)));68  }69  {70    std::vector<bool, min_allocator<bool>> l1(a1, a1 + 3);71    std::vector<bool, min_allocator<bool>>::iterator i = l1.erase(l1.cbegin(), std::next(l1.cbegin(), 2));72    assert(l1.size() == 1);73    assert(std::distance(l1.cbegin(), l1.cend()) == 1);74    assert(i == l1.begin());75    assert((l1 == std::vector<bool, min_allocator<bool>>(a1 + 2, a1 + 3)));76  }77  {78    std::vector<bool, min_allocator<bool>> l1(a1, a1 + 3);79    std::vector<bool, min_allocator<bool>>::iterator i = l1.erase(l1.cbegin(), std::next(l1.cbegin(), 3));80    assert(l1.size() == 0);81    assert(std::distance(l1.cbegin(), l1.cend()) == 0);82    assert(i == l1.begin());83  }84#endif85 86  return true;87}88 89int main(int, char**) {90  tests();91#if TEST_STD_VER > 1792  static_assert(tests());93#endif94  return 0;95}96