15a83710eSEric Fiselier //===----------------------------------------------------------------------===//
25a83710eSEric Fiselier //
357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65a83710eSEric Fiselier //
75a83710eSEric Fiselier //===----------------------------------------------------------------------===//
85a83710eSEric Fiselier
95a83710eSEric Fiselier // <vector>
105a83710eSEric Fiselier // vector<bool>
115a83710eSEric Fiselier
125a83710eSEric Fiselier // void push_back(const value_type& x);
135a83710eSEric Fiselier
145a83710eSEric Fiselier #include <vector>
155a83710eSEric Fiselier #include <cassert>
16e898b484SStephan T. Lavavej #include <cstddef>
175a83710eSEric Fiselier
187fc6a556SMarshall Clow #include "test_macros.h"
195a83710eSEric Fiselier #include "min_allocator.h"
205a83710eSEric Fiselier
tests()21*c74059c5SNikolas Klauser TEST_CONSTEXPR_CXX20 bool tests()
225a83710eSEric Fiselier {
235a83710eSEric Fiselier {
245a83710eSEric Fiselier bool a[] = {0, 1, 1, 0, 1, 0, 0};
255a83710eSEric Fiselier const unsigned N = sizeof(a)/sizeof(a[0]);
265a83710eSEric Fiselier std::vector<bool> c;
275a83710eSEric Fiselier for (unsigned i = 0; i < N; ++i)
285a83710eSEric Fiselier {
295a83710eSEric Fiselier c.push_back(a[i]);
305a83710eSEric Fiselier assert(c.size() == i+1);
31e898b484SStephan T. Lavavej for (std::size_t j = 0; j < c.size(); ++j)
325a83710eSEric Fiselier assert(c[j] == a[j]);
335a83710eSEric Fiselier }
345a83710eSEric Fiselier }
35f2f2a639SEric Fiselier #if TEST_STD_VER >= 11
365a83710eSEric Fiselier {
375a83710eSEric Fiselier bool a[] = {0, 1, 1, 0, 1, 0, 0};
385a83710eSEric Fiselier const unsigned N = sizeof(a)/sizeof(a[0]);
395a83710eSEric Fiselier std::vector<bool, min_allocator<bool>> c;
405a83710eSEric Fiselier for (unsigned i = 0; i < N; ++i)
415a83710eSEric Fiselier {
425a83710eSEric Fiselier c.push_back(a[i]);
435a83710eSEric Fiselier assert(c.size() == i+1);
44e898b484SStephan T. Lavavej for (std::size_t j = 0; j < c.size(); ++j)
455a83710eSEric Fiselier assert(c[j] == a[j]);
465a83710eSEric Fiselier }
475a83710eSEric Fiselier }
485a83710eSEric Fiselier #endif
492df59c50SJF Bastien
50*c74059c5SNikolas Klauser return true;
51*c74059c5SNikolas Klauser }
52*c74059c5SNikolas Klauser
main(int,char **)53*c74059c5SNikolas Klauser int main(int, char**)
54*c74059c5SNikolas Klauser {
55*c74059c5SNikolas Klauser tests();
56*c74059c5SNikolas Klauser #if TEST_STD_VER > 17
57*c74059c5SNikolas Klauser static_assert(tests());
58*c74059c5SNikolas Klauser #endif
592df59c50SJF Bastien return 0;
605a83710eSEric Fiselier }
61