/Src/Dependencies/Boost/libs/unordered/test/unordered/compile_map.cpp

http://hadesmem.googlecode.com/ · C++ · 177 lines · 128 code · 43 blank · 6 comment · 0 complexity · 90001c3cab5a28b730014e5fd4c61b2d MD5 · raw file

  1. // Copyright 2006-2009 Daniel James.
  2. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  3. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  4. // This test creates the containers with members that meet their minimum
  5. // requirements. Makes sure everything compiles and is defined correctly.
  6. #include "../helpers/prefix.hpp"
  7. #include <boost/unordered_map.hpp>
  8. #include <iostream>
  9. #include "../helpers/test.hpp"
  10. #include "../objects/minimal.hpp"
  11. #include "./compile_tests.hpp"
  12. // Explicit instantiation to catch compile-time errors
  13. template class boost::unordered_map<
  14. test::minimal::assignable,
  15. test::minimal::default_copy_constructible,
  16. test::minimal::hash<test::minimal::assignable>,
  17. test::minimal::equal_to<test::minimal::assignable>,
  18. test::minimal::allocator<test::minimal::assignable> >;
  19. template class boost::unordered_multimap<
  20. test::minimal::assignable,
  21. test::minimal::copy_constructible,
  22. test::minimal::hash<test::minimal::assignable>,
  23. test::minimal::equal_to<test::minimal::assignable>,
  24. test::minimal::allocator<test::minimal::assignable> >;
  25. UNORDERED_AUTO_TEST(test0)
  26. {
  27. typedef std::pair<test::minimal::assignable const,
  28. test::minimal::copy_constructible> value_type;
  29. value_type value(
  30. test::minimal::assignable::create(),
  31. test::minimal::copy_constructible::create());
  32. std::cout<<"Test unordered_map.\n";
  33. boost::unordered_map<int, int> int_map;
  34. boost::unordered_map<
  35. test::minimal::assignable,
  36. test::minimal::copy_constructible,
  37. test::minimal::hash<test::minimal::assignable>,
  38. test::minimal::equal_to<test::minimal::assignable>,
  39. test::minimal::allocator<value_type> > map;
  40. container_test(int_map, std::pair<int const, int>(0, 0));
  41. container_test(map, value);
  42. std::cout<<"Test unordered_multimap.\n";
  43. boost::unordered_multimap<int, int> int_multimap;
  44. boost::unordered_multimap<
  45. test::minimal::assignable,
  46. test::minimal::copy_constructible,
  47. test::minimal::hash<test::minimal::assignable>,
  48. test::minimal::equal_to<test::minimal::assignable>,
  49. test::minimal::allocator<value_type> > multimap;
  50. container_test(int_multimap, std::pair<int const, int>(0, 0));
  51. container_test(multimap, value);
  52. }
  53. UNORDERED_AUTO_TEST(equality_tests) {
  54. typedef std::pair<test::minimal::assignable const,
  55. test::minimal::copy_constructible> value_type;
  56. boost::unordered_map<int, int> int_map;
  57. boost::unordered_map<
  58. test::minimal::assignable,
  59. test::minimal::copy_constructible_equality_comparable,
  60. test::minimal::hash<test::minimal::assignable>,
  61. test::minimal::equal_to<test::minimal::assignable>,
  62. test::minimal::allocator<value_type> > map;
  63. equality_test(int_map);
  64. equality_test(map);
  65. boost::unordered_multimap<int, int> int_multimap;
  66. boost::unordered_multimap<
  67. test::minimal::assignable,
  68. test::minimal::copy_constructible_equality_comparable,
  69. test::minimal::hash<test::minimal::assignable>,
  70. test::minimal::equal_to<test::minimal::assignable>,
  71. test::minimal::allocator<value_type> > multimap;
  72. equality_test(int_multimap);
  73. equality_test(multimap);
  74. }
  75. UNORDERED_AUTO_TEST(test1) {
  76. boost::hash<int> hash;
  77. std::equal_to<int> equal_to;
  78. int value = 0;
  79. std::pair<int const, int> map_value(0, 0);
  80. std::cout<<"Test unordered_map.\n";
  81. boost::unordered_map<int, int> map;
  82. unordered_unique_test(map, map_value);
  83. unordered_map_test(map, value, value);
  84. unordered_test(map, value, map_value, hash, equal_to);
  85. unordered_map_functions(map, value, value);
  86. std::cout<<"Test unordered_multimap.\n";
  87. boost::unordered_multimap<int, int> multimap;
  88. unordered_equivalent_test(multimap, map_value);
  89. unordered_map_test(multimap, value, value);
  90. unordered_test(multimap, value, map_value, hash, equal_to);
  91. }
  92. UNORDERED_AUTO_TEST(test2)
  93. {
  94. test::minimal::assignable assignable
  95. = test::minimal::assignable::create();
  96. test::minimal::copy_constructible copy_constructible
  97. = test::minimal::copy_constructible::create();
  98. test::minimal::hash<test::minimal::assignable> hash
  99. = test::minimal::hash<test::minimal::assignable>::create();
  100. test::minimal::equal_to<test::minimal::assignable> equal_to
  101. = test::minimal::equal_to<test::minimal::assignable>::create();
  102. typedef std::pair<test::minimal::assignable const,
  103. test::minimal::copy_constructible> map_value_type;
  104. map_value_type map_value(assignable, copy_constructible);
  105. std::cout<<"Test unordered_map.\n";
  106. boost::unordered_map<
  107. test::minimal::assignable,
  108. test::minimal::copy_constructible,
  109. test::minimal::hash<test::minimal::assignable>,
  110. test::minimal::equal_to<test::minimal::assignable>,
  111. test::minimal::allocator<map_value_type> > map;
  112. unordered_unique_test(map, map_value);
  113. unordered_map_test(map, assignable, copy_constructible);
  114. unordered_test(map, assignable, map_value, hash, equal_to);
  115. boost::unordered_map<
  116. test::minimal::assignable,
  117. test::minimal::default_copy_constructible,
  118. test::minimal::hash<test::minimal::assignable>,
  119. test::minimal::equal_to<test::minimal::assignable>,
  120. test::minimal::allocator<map_value_type> > map2;
  121. test::minimal::default_copy_constructible default_copy_constructible;
  122. unordered_map_functions(map2, assignable, default_copy_constructible);
  123. std::cout<<"Test unordered_multimap.\n";
  124. boost::unordered_multimap<
  125. test::minimal::assignable,
  126. test::minimal::copy_constructible,
  127. test::minimal::hash<test::minimal::assignable>,
  128. test::minimal::equal_to<test::minimal::assignable>,
  129. test::minimal::allocator<map_value_type> > multimap;
  130. unordered_equivalent_test(multimap, map_value);
  131. unordered_map_test(multimap, assignable, copy_constructible);
  132. unordered_test(multimap, assignable, map_value, hash, equal_to);
  133. }
  134. RUN_TESTS()