xref: /llvm-project/libcxx/test/std/containers/sequences/vector.bool/size.pass.cpp (revision 98d3d5b5da66e3cf7807c23a0294280bb796466b)
14cb7d781SMarshall Clow //===----------------------------------------------------------------------===//
24cb7d781SMarshall Clow //
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
64cb7d781SMarshall Clow //
74cb7d781SMarshall Clow //===----------------------------------------------------------------------===//
84cb7d781SMarshall Clow 
94cb7d781SMarshall Clow // <vector>
104cb7d781SMarshall Clow 
114cb7d781SMarshall Clow // class vector
124cb7d781SMarshall Clow 
134cb7d781SMarshall Clow // size_type size() const noexcept;
144cb7d781SMarshall Clow 
154cb7d781SMarshall Clow #include <vector>
164cb7d781SMarshall Clow #include <cassert>
174cb7d781SMarshall Clow 
184cb7d781SMarshall Clow #include "test_macros.h"
194cb7d781SMarshall Clow #include "min_allocator.h"
204cb7d781SMarshall Clow 
tests()21*98d3d5b5SNikolas Klauser TEST_CONSTEXPR_CXX20 bool tests()
224cb7d781SMarshall Clow {
234cb7d781SMarshall Clow     {
244cb7d781SMarshall Clow     typedef std::vector<bool> C;
254cb7d781SMarshall Clow     C c;
264cb7d781SMarshall Clow     ASSERT_NOEXCEPT(c.size());
274cb7d781SMarshall Clow     assert(c.size() == 0);
284cb7d781SMarshall Clow     c.push_back(false);
294cb7d781SMarshall Clow     assert(c.size() == 1);
304cb7d781SMarshall Clow     c.push_back(true);
314cb7d781SMarshall Clow     assert(c.size() == 2);
32c4eb5056SMarshall Clow     c.push_back(false);
334aef6a08SBilly Robert O'Neal III     assert(c.size() == 3);
344cb7d781SMarshall Clow     c.erase(c.begin());
354cb7d781SMarshall Clow     assert(c.size() == 2);
364cb7d781SMarshall Clow     c.erase(c.begin());
374cb7d781SMarshall Clow     assert(c.size() == 1);
384cb7d781SMarshall Clow     c.erase(c.begin());
394cb7d781SMarshall Clow     assert(c.size() == 0);
404cb7d781SMarshall Clow     }
414cb7d781SMarshall Clow #if TEST_STD_VER >= 11
424cb7d781SMarshall Clow     {
434cb7d781SMarshall Clow     typedef std::vector<bool, min_allocator<bool>> C;
444cb7d781SMarshall Clow     C c;
454cb7d781SMarshall Clow     ASSERT_NOEXCEPT(c.size());
464cb7d781SMarshall Clow     assert(c.size() == 0);
474cb7d781SMarshall Clow     c.push_back(false);
484cb7d781SMarshall Clow     assert(c.size() == 1);
494cb7d781SMarshall Clow     c.push_back(true);
504cb7d781SMarshall Clow     assert(c.size() == 2);
51c4eb5056SMarshall Clow     c.push_back(false);
524aef6a08SBilly Robert O'Neal III     assert(c.size() == 3);
534cb7d781SMarshall Clow     c.erase(c.begin());
544cb7d781SMarshall Clow     assert(c.size() == 2);
554cb7d781SMarshall Clow     c.erase(c.begin());
564cb7d781SMarshall Clow     assert(c.size() == 1);
574cb7d781SMarshall Clow     c.erase(c.begin());
584cb7d781SMarshall Clow     assert(c.size() == 0);
594cb7d781SMarshall Clow     }
604cb7d781SMarshall Clow #endif
612df59c50SJF Bastien 
62*98d3d5b5SNikolas Klauser     return true;
63*98d3d5b5SNikolas Klauser }
64*98d3d5b5SNikolas Klauser 
main(int,char **)65*98d3d5b5SNikolas Klauser int main(int, char**)
66*98d3d5b5SNikolas Klauser {
67*98d3d5b5SNikolas Klauser     tests();
68*98d3d5b5SNikolas Klauser #if TEST_STD_VER > 17
69*98d3d5b5SNikolas Klauser     static_assert(tests());
70*98d3d5b5SNikolas Klauser #endif
712df59c50SJF Bastien     return 0;
724cb7d781SMarshall Clow }
73