difference.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. // Copyright Louis Dionne 2013-2017
  2. // Distributed under the Boost Software License, Version 1.0.
  3. // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
  4. #include <boost/hana/assert.hpp>
  5. #include <boost/hana/difference.hpp>
  6. #include <boost/hana/equal.hpp>
  7. #include <boost/hana/map.hpp>
  8. #include <laws/base.hpp>
  9. #include <support/minimal_product.hpp>
  10. namespace hana = boost::hana;
  11. template <int i>
  12. auto key() { return hana::test::ct_eq<i>{}; }
  13. template <int i>
  14. auto val() { return hana::test::ct_eq<-i>{}; }
  15. template <int i, int j>
  16. auto p() { return ::minimal_product(key<i>(), val<j>()); }
  17. int main() {
  18. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  19. hana::difference(
  20. hana::make_map(),
  21. hana::make_map()
  22. ),
  23. hana::make_map()
  24. ));
  25. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  26. hana::difference(
  27. hana::make_map(p<1, 1>()),
  28. hana::make_map()
  29. ),
  30. hana::make_map(p<1, 1>())
  31. ));
  32. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  33. hana::difference(
  34. hana::make_map(p<1, 1>()),
  35. hana::make_map(p<2, 2>())
  36. ),
  37. hana::make_map(p<1, 1>())
  38. ));
  39. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  40. hana::difference(
  41. hana::make_map(p<1, 1>()),
  42. hana::make_map(p<1, 2>())
  43. ),
  44. hana::make_map()
  45. ));
  46. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  47. hana::difference(
  48. hana::make_map(p<1, 1>(),
  49. p<2, 2>(),
  50. p<3, 3>()),
  51. hana::make_map(p<2, 2>(),
  52. p<4, 4>())
  53. ),
  54. hana::make_map(p<1, 1>(),
  55. p<3, 3>())
  56. ));
  57. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  58. hana::difference(
  59. hana::make_map(p<1, 1>(),
  60. p<2, 2>()),
  61. hana::make_map(p<2, 3>(),
  62. p<1, 4>())
  63. ),
  64. hana::make_map()
  65. ));
  66. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  67. hana::difference(
  68. hana::make_map(p<1, 1>(),
  69. p<2, 2>(),
  70. p<3, 3>(),
  71. p<4, 4>(),
  72. p<5, 5>(),
  73. p<6, 6>(),
  74. p<7, 7>(),
  75. p<8, 8>(),
  76. p<9, 9>(),
  77. p<10, 10>()),
  78. hana::make_map(p<0, 2>(),
  79. p<2, 4>(),
  80. p<3, 6>(),
  81. p<4, 8>(),
  82. p<5, 10>(),
  83. p<20, 30>())
  84. ),
  85. hana::make_map(p<1, 1>(),
  86. p<6, 6>(),
  87. p<7, 7>(),
  88. p<8, 8>(),
  89. p<9, 9>(),
  90. p<10, 10>())
  91. ));
  92. }