Home | History | Annotate | Download | only in unord.map
      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 // <unordered_map>
     11 
     12 // class unordered_map
     13 
     14 // size_type max_size() const;
     15 
     16 #include <cassert>
     17 #include <limits>
     18 #include <type_traits>
     19 #include <unordered_map>
     20 
     21 #include "test_allocator.h"
     22 #include "test_macros.h"
     23 
     24 int main()
     25 {
     26   typedef std::pair<const int, int> KV;
     27   {
     28     typedef limited_allocator<KV, 10> A;
     29     typedef std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, A>
     30         C;
     31     C c;
     32     assert(c.max_size() <= 10);
     33     LIBCPP_ASSERT(c.max_size() == 10);
     34   }
     35   {
     36     typedef limited_allocator<KV, (size_t)-1> A;
     37     typedef std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, A>
     38         C;
     39     const C::difference_type max_dist =
     40         std::numeric_limits<C::difference_type>::max();
     41     C c;
     42     assert(c.max_size() <= max_dist);
     43     LIBCPP_ASSERT(c.max_size() == max_dist);
     44     }
     45     {
     46       typedef std::unordered_map<char, int> C;
     47       const C::difference_type max_dist =
     48           std::numeric_limits<C::difference_type>::max();
     49       C c;
     50       assert(c.max_size() <= max_dist);
     51       assert(c.max_size() <= alloc_max_size(c.get_allocator()));
     52     }
     53 }
     54