brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · fb0de06 Raw
60 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 11// void flip();12 13#include <cassert>14#include <memory>15#include <vector>16 17#include "min_allocator.h"18#include "test_allocator.h"19#include "test_macros.h"20 21template <typename Allocator>22TEST_CONSTEXPR_CXX20 void test_vector_flip(std::size_t n, Allocator a) {23  std::vector<bool, Allocator> v(n, false, a);24  for (std::size_t i = 0; i < n; ++i)25    v[i] = i & 1;26  std::vector<bool, Allocator> original = v;27  v.flip();28  for (size_t i = 0; i < n; ++i)29    assert(v[i] == !original[i]);30  v.flip();31  assert(v == original);32}33 34TEST_CONSTEXPR_CXX20 bool tests() {35  // Test empty vectors36  test_vector_flip(0, std::allocator<bool>());37  test_vector_flip(0, min_allocator<bool>());38  test_vector_flip(0, test_allocator<bool>(5));39 40  // Test small vectors with different allocators41  test_vector_flip(3, std::allocator<bool>());42  test_vector_flip(3, min_allocator<bool>());43  test_vector_flip(3, test_allocator<bool>(5));44 45  // Test large vectors with different allocators46  test_vector_flip(1000, std::allocator<bool>());47  test_vector_flip(1000, min_allocator<bool>());48  test_vector_flip(1000, test_allocator<bool>(5));49 50  return true;51}52 53int main(int, char**) {54  tests();55#if TEST_STD_VER >= 2056  static_assert(tests());57#endif58  return 0;59}60