at.cpp 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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/at.hpp>
  6. #include <boost/hana/equal.hpp>
  7. #include <boost/hana/experimental/view.hpp>
  8. #include <boost/hana/integral_constant.hpp>
  9. #include <laws/base.hpp>
  10. #include <support/seq.hpp>
  11. namespace hana = boost::hana;
  12. using hana::test::ct_eq;
  13. int main() {
  14. auto container = ::seq;
  15. {
  16. auto storage1 = container(ct_eq<0>{});
  17. auto storage2 = container();
  18. auto joined = hana::experimental::joined(storage1, storage2);
  19. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  20. hana::at(joined, hana::size_c<0>),
  21. ct_eq<0>{}
  22. ));
  23. }{
  24. auto storage1 = container();
  25. auto storage2 = container(ct_eq<0>{});
  26. auto joined = hana::experimental::joined(storage1, storage2);
  27. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  28. hana::at(joined, hana::size_c<0>),
  29. ct_eq<0>{}
  30. ));
  31. }
  32. {
  33. auto storage1 = container(ct_eq<0>{}, ct_eq<1>{});
  34. auto storage2 = container();
  35. auto joined = hana::experimental::joined(storage1, storage2);
  36. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  37. hana::at(joined, hana::size_c<0>),
  38. ct_eq<0>{}
  39. ));
  40. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  41. hana::at(joined, hana::size_c<1>),
  42. ct_eq<1>{}
  43. ));
  44. }{
  45. auto storage1 = container(ct_eq<0>{});
  46. auto storage2 = container(ct_eq<1>{});
  47. auto joined = hana::experimental::joined(storage1, storage2);
  48. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  49. hana::at(joined, hana::size_c<0>),
  50. ct_eq<0>{}
  51. ));
  52. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  53. hana::at(joined, hana::size_c<1>),
  54. ct_eq<1>{}
  55. ));
  56. }{
  57. auto storage1 = container();
  58. auto storage2 = container(ct_eq<0>{}, ct_eq<1>{});
  59. auto joined = hana::experimental::joined(storage1, storage2);
  60. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  61. hana::at(joined, hana::size_c<0>),
  62. ct_eq<0>{}
  63. ));
  64. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  65. hana::at(joined, hana::size_c<1>),
  66. ct_eq<1>{}
  67. ));
  68. }
  69. {
  70. auto storage1 = container(ct_eq<0>{}, ct_eq<1>{});
  71. auto storage2 = container(ct_eq<2>{}, ct_eq<3>{});
  72. auto joined = hana::experimental::joined(storage1, storage2);
  73. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  74. hana::at(joined, hana::size_c<0>),
  75. ct_eq<0>{}
  76. ));
  77. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  78. hana::at(joined, hana::size_c<1>),
  79. ct_eq<1>{}
  80. ));
  81. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  82. hana::at(joined, hana::size_c<2>),
  83. ct_eq<2>{}
  84. ));
  85. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  86. hana::at(joined, hana::size_c<3>),
  87. ct_eq<3>{}
  88. ));
  89. }
  90. }