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

http://hadesmem.googlecode.com/ · C++ · 143 lines · 103 code · 34 blank · 6 comment · 0 complexity · c7b0d36ce1cbf397716c01644fa3ccf3 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_set.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_set<
  14. test::minimal::assignable,
  15. test::minimal::hash<test::minimal::assignable>,
  16. test::minimal::equal_to<test::minimal::assignable>,
  17. test::minimal::allocator<test::minimal::assignable> >;
  18. template class boost::unordered_multiset<
  19. test::minimal::assignable,
  20. test::minimal::hash<test::minimal::assignable>,
  21. test::minimal::equal_to<test::minimal::assignable>,
  22. test::minimal::allocator<test::minimal::assignable> >;
  23. UNORDERED_AUTO_TEST(test0)
  24. {
  25. test::minimal::assignable assignable = test::minimal::assignable::create();
  26. std::cout<<"Test unordered_set.\n";
  27. boost::unordered_set<int> int_set;
  28. boost::unordered_set<
  29. test::minimal::assignable,
  30. test::minimal::hash<test::minimal::assignable>,
  31. test::minimal::equal_to<test::minimal::assignable>,
  32. test::minimal::allocator<test::minimal::assignable> > set;
  33. container_test(int_set, 0);
  34. container_test(set, assignable);
  35. std::cout<<"Test unordered_multiset.\n";
  36. boost::unordered_multiset<int> int_multiset;
  37. boost::unordered_multiset<
  38. test::minimal::assignable,
  39. test::minimal::hash<test::minimal::assignable>,
  40. test::minimal::equal_to<test::minimal::assignable>,
  41. test::minimal::allocator<test::minimal::assignable> > multiset;
  42. container_test(int_multiset, 0);
  43. container_test(multiset, assignable);
  44. }
  45. UNORDERED_AUTO_TEST(equality_tests) {
  46. typedef test::minimal::assignable value_type;
  47. boost::unordered_set<int> int_set;
  48. boost::unordered_set<
  49. test::minimal::assignable,
  50. test::minimal::hash<test::minimal::assignable>,
  51. test::minimal::equal_to<test::minimal::assignable>,
  52. test::minimal::allocator<value_type> > set;
  53. equality_test(int_set);
  54. equality_test(set);
  55. boost::unordered_multiset<int> int_multiset;
  56. boost::unordered_multiset<
  57. test::minimal::assignable,
  58. test::minimal::hash<test::minimal::assignable>,
  59. test::minimal::equal_to<test::minimal::assignable>,
  60. test::minimal::allocator<value_type> > multiset;
  61. equality_test(int_multiset);
  62. equality_test(multiset);
  63. }
  64. UNORDERED_AUTO_TEST(test1)
  65. {
  66. boost::hash<int> hash;
  67. std::equal_to<int> equal_to;
  68. int value = 0;
  69. std::cout<<"Test unordered_set.\n";
  70. boost::unordered_set<int> set;
  71. unordered_unique_test(set, value);
  72. unordered_set_test(set, value);
  73. unordered_test(set, value, value, hash, equal_to);
  74. std::cout<<"Test unordered_multiset.\n";
  75. boost::unordered_multiset<int> multiset;
  76. unordered_equivalent_test(multiset, value);
  77. unordered_set_test(multiset, value);
  78. unordered_test(multiset, value, value, hash, equal_to);
  79. }
  80. UNORDERED_AUTO_TEST(test2)
  81. {
  82. test::minimal::assignable assignable
  83. = test::minimal::assignable::create();
  84. test::minimal::copy_constructible copy_constructible
  85. = test::minimal::copy_constructible::create();
  86. test::minimal::hash<test::minimal::assignable> hash
  87. = test::minimal::hash<test::minimal::assignable>::create();
  88. test::minimal::equal_to<test::minimal::assignable> equal_to
  89. = test::minimal::equal_to<test::minimal::assignable>::create();
  90. std::cout<<"Test unordered_set.\n";
  91. boost::unordered_set<
  92. test::minimal::assignable,
  93. test::minimal::hash<test::minimal::assignable>,
  94. test::minimal::equal_to<test::minimal::assignable>,
  95. test::minimal::allocator<test::minimal::assignable> > set;
  96. unordered_unique_test(set, assignable);
  97. unordered_set_test(set, assignable);
  98. unordered_test(set, assignable, assignable, hash, equal_to);
  99. std::cout<<"Test unordered_multiset.\n";
  100. boost::unordered_multiset<
  101. test::minimal::assignable,
  102. test::minimal::hash<test::minimal::assignable>,
  103. test::minimal::equal_to<test::minimal::assignable>,
  104. test::minimal::allocator<test::minimal::assignable> > multiset;
  105. unordered_equivalent_test(multiset, assignable);
  106. unordered_set_test(multiset, assignable);
  107. unordered_test(multiset, assignable, assignable, hash, equal_to);
  108. }
  109. RUN_TESTS()