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)
5 #include <boost/hana/assert.hpp>
6 #include <boost/hana/integral_constant.hpp>
8 #include "matrix/comparable.hpp"
9 namespace hana
= boost::hana
;
10 using namespace cppcon
;
16 BOOST_HANA_CONSTEXPR_LAMBDA
auto m
= matrix(
21 BOOST_HANA_CONSTEXPR_CHECK(hana::equal(
33 BOOST_HANA_CONSTEXPR_LAMBDA
auto v
= vector(1, '2', hana::int_c
<3>, 4.2f
);
34 BOOST_HANA_CONSTEXPR_CHECK(v
.size() == 4ul);
35 BOOST_HANA_CONSTEXPR_CHECK(v
.nrows() == 4ul);
36 BOOST_HANA_CONSTEXPR_CHECK(v
.ncolumns() == 1ul);
41 BOOST_HANA_CONSTEXPR_LAMBDA
auto m
= matrix(
43 row('4', hana::char_c
<'5'>, 6),
44 row(hana::int_c
<7>, '8', 9.3)
46 BOOST_HANA_CONSTEXPR_CHECK(m
.at(hana::int_c
<0>, hana::int_c
<0>) == 1);
47 BOOST_HANA_CONSTEXPR_CHECK(m
.at(hana::int_c
<0>, hana::int_c
<1>) == '2');
48 BOOST_HANA_CONSTEXPR_CHECK(m
.at(hana::int_c
<0>, hana::int_c
<2>) == 3);
50 BOOST_HANA_CONSTEXPR_CHECK(m
.at(hana::int_c
<1>, hana::int_c
<0>) == '4');
51 BOOST_HANA_CONSTANT_CHECK(m
.at(hana::int_c
<1>, hana::int_c
<1>) == hana::char_c
<'5'>);
52 BOOST_HANA_CONSTEXPR_CHECK(m
.at(hana::int_c
<1>, hana::int_c
<2>) == 6);
54 BOOST_HANA_CONSTANT_CHECK(m
.at(hana::int_c
<2>, hana::int_c
<0>) == hana::int_c
<7>);
55 BOOST_HANA_CONSTEXPR_CHECK(m
.at(hana::int_c
<2>, hana::int_c
<1>) == '8');
56 BOOST_HANA_CONSTEXPR_CHECK(m
.at(hana::int_c
<2>, hana::int_c
<2>) == 9.3);
59 // size, ncolumns, nrows
61 BOOST_HANA_CONSTEXPR_LAMBDA
auto m
= matrix(
63 row('4', hana::char_c
<'5'>, 6)
65 BOOST_HANA_CONSTEXPR_CHECK(m
.size() == 6ul);
66 BOOST_HANA_CONSTEXPR_CHECK(m
.ncolumns() == 3ul);
67 BOOST_HANA_CONSTEXPR_CHECK(m
.nrows() == 2ul);