]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/std/containers/sequences/forwardlist/max_size.pass.cpp
Vendor import of libc++ trunk r351319 (just before the release_80
[FreeBSD/FreeBSD.git] / test / std / containers / sequences / forwardlist / max_size.pass.cpp
1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // <forward_list>
11
12 // size_type max_size() const;
13
14 #include <cassert>
15 #include <forward_list>
16 #include <limits>
17 #include <type_traits>
18
19 #include "test_allocator.h"
20 #include "test_macros.h"
21
22 int main()
23 {
24     {
25       typedef limited_allocator<int, 10> A;
26       typedef std::forward_list<int, A> C;
27       C c;
28       assert(c.max_size() <= 10);
29       LIBCPP_ASSERT(c.max_size() == 10);
30     }
31     {
32       typedef limited_allocator<int, (size_t)-1> A;
33       typedef std::forward_list<int, A> C;
34       const C::size_type max_dist =
35           static_cast<C::size_type>(std::numeric_limits<C::difference_type>::max());
36       C c;
37       assert(c.max_size() <= max_dist);
38       LIBCPP_ASSERT(c.max_size() == max_dist);
39     }
40     {
41       typedef std::forward_list<char> C;
42       const C::size_type max_dist =
43           static_cast<C::size_type>(std::numeric_limits<C::difference_type>::max());
44       C c;
45       assert(c.max_size() <= max_dist);
46       assert(c.max_size() <= alloc_max_size(c.get_allocator()));
47     }
48 }