From e9d396f79d7a5dfd655662d6eb15e235f2ba201e Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Tue, 20 May 2014 18:46:56 -0400 Subject: [PATCH] Split Foldable unit tests. --- test/CMakeLists.txt | 6 +++- test/foldable.cpp | 50 ------------------------------ test/foldable/maximum.cpp | 21 +++++++++++++ test/foldable/minimal_foldable.hpp | 18 +++++++++++ test/foldable/minimum.cpp | 21 +++++++++++++ test/foldable/product.cpp | 22 +++++++++++++ test/foldable/sum.cpp | 22 +++++++++++++ 7 files changed, 109 insertions(+), 51 deletions(-) delete mode 100644 test/foldable.cpp create mode 100644 test/foldable/maximum.cpp create mode 100644 test/foldable/minimal_foldable.hpp create mode 100644 test/foldable/minimum.cpp create mode 100644 test/foldable/product.cpp create mode 100644 test/foldable/sum.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 00429feaa..5325e3c69 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -17,6 +17,11 @@ endfunction() boost_hana_add_test(detail.comparable_from_iterable) boost_hana_add_test(detail.foldable_from_iterable) +boost_hana_add_test(foldable.maximum) +boost_hana_add_test(foldable.minimum) +boost_hana_add_test(foldable.product) +boost_hana_add_test(foldable.sum) + boost_hana_add_test(functional.always) boost_hana_add_test(functional.apply) boost_hana_add_test(functional.compose) @@ -51,7 +56,6 @@ boost_hana_add_test(logical.or) boost_hana_add_test(type.mpl_equivalent) boost_hana_add_test(type.traits) -boost_hana_add_test(foldable) boost_hana_add_test(hana) boost_hana_add_test(integral) boost_hana_add_test(misc.adl) diff --git a/test/foldable.cpp b/test/foldable.cpp deleted file mode 100644 index 0da7513bd..000000000 --- a/test/foldable.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Louis Dionne 2014 - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE.md or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -#include - -#include -#include -#include -#include -using namespace boost::hana; - - -BOOST_HANA_CONSTEXPR_LAMBDA auto foldable = list; // minimal foldable - -void test_minimum() { - BOOST_HANA_STATIC_ASSERT(minimum(foldable(int_<0>)) == int_<0>); - BOOST_HANA_STATIC_ASSERT(minimum(foldable(int_<0>, int_<1>)) == int_<0>); - BOOST_HANA_STATIC_ASSERT(minimum(foldable(int_<1>, int_<0>)) == int_<0>); -} - -void test_maximum() { - BOOST_HANA_STATIC_ASSERT(maximum(foldable(int_<0>)) == int_<0>); - BOOST_HANA_STATIC_ASSERT(maximum(foldable(int_<0>, int_<1>)) == int_<1>); - BOOST_HANA_STATIC_ASSERT(maximum(foldable(int_<1>, int_<0>)) == int_<1>); -} - -void test_sum() { - BOOST_HANA_STATIC_ASSERT(sum(foldable()) == int_<0>); - BOOST_HANA_STATIC_ASSERT(sum(foldable(int_<0>)) == int_<0>); - BOOST_HANA_STATIC_ASSERT(sum(foldable(int_<0>, int_<1>)) == int_<1>); - BOOST_HANA_STATIC_ASSERT(sum(foldable(int_<0>, int_<1>, int_<2>)) == int_<3>); -} - -void test_product() { - BOOST_HANA_STATIC_ASSERT(product(foldable()) == int_<1>); - BOOST_HANA_STATIC_ASSERT(product(foldable(int_<1>)) == int_<1>); - BOOST_HANA_STATIC_ASSERT(product(foldable(int_<1>, int_<2>)) == int_<2>); - BOOST_HANA_STATIC_ASSERT(product(foldable(int_<1>, int_<2>, int_<3>)) == int_<6>); -} - -int main() { - test_minimum(); - test_maximum(); - test_sum(); - test_product(); -} diff --git a/test/foldable/maximum.cpp b/test/foldable/maximum.cpp new file mode 100644 index 000000000..af5c78783 --- /dev/null +++ b/test/foldable/maximum.cpp @@ -0,0 +1,21 @@ +/* + * Copyright Louis Dionne 2014 + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE.md or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ + +#include + +#include +#include + +#include "minimal_foldable.hpp" +using namespace boost::hana; + + +int main() { + BOOST_HANA_STATIC_ASSERT(maximum(foldable(int_<0>)) == int_<0>); + BOOST_HANA_STATIC_ASSERT(maximum(foldable(int_<0>, int_<1>)) == int_<1>); + BOOST_HANA_STATIC_ASSERT(maximum(foldable(int_<1>, int_<0>)) == int_<1>); +} diff --git a/test/foldable/minimal_foldable.hpp b/test/foldable/minimal_foldable.hpp new file mode 100644 index 000000000..693db362c --- /dev/null +++ b/test/foldable/minimal_foldable.hpp @@ -0,0 +1,18 @@ +/* + * Copyright Louis Dionne 2014 + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE.md or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ + +#ifndef BOOST_HANA_TEST_FOLDABLE_MINIMAL_FOLDABLE_HPP +#define BOOST_HANA_TEST_FOLDABLE_MINIMAL_FOLDABLE_HPP + +#include +#include + + +//! @todo Write a real minimal foldable. +BOOST_HANA_CONSTEXPR_LAMBDA auto foldable = boost::hana::list; + +#endif // !BOOST_HANA_TEST_FOLDABLE_MINIMAL_FOLDABLE_HPP diff --git a/test/foldable/minimum.cpp b/test/foldable/minimum.cpp new file mode 100644 index 000000000..fbbd2ac64 --- /dev/null +++ b/test/foldable/minimum.cpp @@ -0,0 +1,21 @@ +/* + * Copyright Louis Dionne 2014 + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE.md or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ + +#include + +#include +#include + +#include "minimal_foldable.hpp" +using namespace boost::hana; + + +int main() { + BOOST_HANA_STATIC_ASSERT(minimum(foldable(int_<0>)) == int_<0>); + BOOST_HANA_STATIC_ASSERT(minimum(foldable(int_<0>, int_<1>)) == int_<0>); + BOOST_HANA_STATIC_ASSERT(minimum(foldable(int_<1>, int_<0>)) == int_<0>); +} diff --git a/test/foldable/product.cpp b/test/foldable/product.cpp new file mode 100644 index 000000000..366b6d0b1 --- /dev/null +++ b/test/foldable/product.cpp @@ -0,0 +1,22 @@ +/* + * Copyright Louis Dionne 2014 + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE.md or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ + +#include + +#include +#include + +#include "minimal_foldable.hpp" +using namespace boost::hana; + + +int main() { + BOOST_HANA_STATIC_ASSERT(product(foldable()) == int_<1>); + BOOST_HANA_STATIC_ASSERT(product(foldable(int_<1>)) == int_<1>); + BOOST_HANA_STATIC_ASSERT(product(foldable(int_<1>, int_<2>)) == int_<2>); + BOOST_HANA_STATIC_ASSERT(product(foldable(int_<1>, int_<2>, int_<3>)) == int_<6>); +} diff --git a/test/foldable/sum.cpp b/test/foldable/sum.cpp new file mode 100644 index 000000000..d93ddf17f --- /dev/null +++ b/test/foldable/sum.cpp @@ -0,0 +1,22 @@ +/* + * Copyright Louis Dionne 2014 + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE.md or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ + +#include + +#include +#include + +#include "minimal_foldable.hpp" +using namespace boost::hana; + + +int main() { + BOOST_HANA_STATIC_ASSERT(sum(foldable()) == int_<0>); + BOOST_HANA_STATIC_ASSERT(sum(foldable(int_<0>)) == int_<0>); + BOOST_HANA_STATIC_ASSERT(sum(foldable(int_<0>, int_<1>)) == int_<1>); + BOOST_HANA_STATIC_ASSERT(sum(foldable(int_<0>, int_<1>, int_<2>)) == int_<3>); +}