1 /*=============================================================================
2     Copyright (c) 2004 Angus Leeming
3 
4     Distributed under the Boost Software License, Version 1.0. (See accompanying
5     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 ==============================================================================*/
7 #include "container_tests.hpp"
8 #include <boost/static_assert.hpp>
9 
build_map()10 std::map<int, int> const build_map()
11 {
12     typedef std::map<int, int> int_map;
13     typedef std::vector<int> int_vector;
14 
15     int_map result;
16     int_vector const data = build_vector();
17     int_vector::const_iterator it = data.begin();
18     int_vector::const_iterator const end = data.end();
19     for (; it != end; ++it) {
20       int const value = *it;
21       result[value] = 100 * value;
22     }
23     return result;
24 }
25 
init_vector()26 std::vector<int> const init_vector()
27 {
28     typedef std::vector<int> int_vector;
29     int const data[] = { -4, -3, -2, -1, 0 };
30     int_vector::size_type const data_size = sizeof(data) / sizeof(data[0]);
31     return int_vector(data, data + data_size);
32 }
33 
build_vector()34 std::vector<int> const build_vector()
35 {
36     typedef std::vector<int> int_vector;
37     static int_vector data = init_vector();
38     int_vector::size_type const size = data.size();
39     int_vector::iterator it = data.begin();
40     int_vector::iterator const end = data.end();
41     for (; it != end; ++it)
42       *it += size;
43     return data;
44 }
45 
46 int
main()47 main()
48 {
49     BOOST_STATIC_ASSERT((phx::stl::has_mapped_type<std::map<int, int> >::value));
50     BOOST_STATIC_ASSERT((phx::stl::has_key_type<std::map<int, int> >::value));
51 
52     std::map<int, int> const data = build_map();
53     test_begin(data);
54     test_clear(data);
55     test_empty(data);
56     test_end(data);
57     test_map_erase(data);
58     test_get_allocator(data);
59     return boost::report_errors();
60 }
61 
62