size.pass.cpp revision 2645a49a67cd23f82f3a431adeb4488ff7a53d55
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 size() const noexcept;
15
16#include <unordered_map>
17#include <cassert>
18
19#include "test_macros.h"
20#include "min_allocator.h"
21
22int main()
23{
24    {
25    typedef std::unordered_map<int, double> M;
26    M m;
27    ASSERT_NOEXCEPT(m.size());
28    assert(m.size() == 0);
29    m.insert(M::value_type(2, 1.5));
30    assert(m.size() == 1);
31    m.insert(M::value_type(1, 1.5));
32    assert(m.size() == 2);
33    m.insert(M::value_type(3, 1.5));
34    assert(m.size() == 3);
35    m.erase(m.begin());
36    assert(m.size() == 2);
37    m.erase(m.begin());
38    assert(m.size() == 1);
39    m.erase(m.begin());
40    assert(m.size() == 0);
41    }
42#if TEST_STD_VER >= 11
43    {
44    typedef std::unordered_map<int, double, std::hash<int>, std::equal_to<int>, min_allocator<std::pair<const int, double>>> M;
45    M m;
46    ASSERT_NOEXCEPT(m.size());
47    assert(m.size() == 0);
48    m.insert(M::value_type(2, 1.5));
49    assert(m.size() == 1);
50    m.insert(M::value_type(1, 1.5));
51    assert(m.size() == 2);
52    m.insert(M::value_type(3, 1.5));
53    assert(m.size() == 3);
54    m.erase(m.begin());
55    assert(m.size() == 2);
56    m.erase(m.begin());
57    assert(m.size() == 1);
58    m.erase(m.begin());
59    assert(m.size() == 0);
60    }
61#endif
62}
63