From b0934916a981086de41c089195281269ce66ff8a Mon Sep 17 00:00:00 2001 From: "hans.dembinski@gmail.com" Date: Sun, 5 Feb 2017 12:15:49 +0000 Subject: [PATCH] fixing jams and better type safety in tests --- build/Jamfile.v2 | 25 +++++----- test/Jamfile.v2 | 45 +++++++++++++++++ test/{check => }/axis_size.cpp | 0 test/container_storage_test.cpp | 45 +++++++++-------- test/dynamic_histogram_test.cpp | 80 +++++++++++++++--------------- test/{check => }/run_speed_root.sh | 0 test/{check => }/speed_cpp.cpp | 0 test/{check => }/speed_root.cpp | 0 test/{check => }/speed_vs_numpy.py | 0 9 files changed, 121 insertions(+), 74 deletions(-) create mode 100644 test/Jamfile.v2 rename test/{check => }/axis_size.cpp (100%) rename test/{check => }/run_speed_root.sh (100%) rename test/{check => }/speed_cpp.cpp (100%) rename test/{check => }/speed_root.cpp (100%) rename test/{check => }/speed_vs_numpy.py (100%) diff --git a/build/Jamfile.v2 b/build/Jamfile.v2 index 9dd11e4b..07c614b7 100644 --- a/build/Jamfile.v2 +++ b/build/Jamfile.v2 @@ -2,12 +2,13 @@ # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) +import python ; +import ../../config/checks/config : requires ; + project boost/histogram : source-location ../src ; -import python ; - if [ python.configured ] { python-extension histogram @@ -19,16 +20,16 @@ if [ python.configured ] /boost/python//boost_python /boost/serialization//boost_serialization shared + [ requires + cxx11_auto_declarations + cxx11_defaulted_functions + cxx11_constexpr + cxx11_noexcept + cxx11_nullptr + cxx11_rvalue_references + cxx11_template_aliases + cxx11_variadic_templates + ] : release - [ requires cxx11_auto_declarations - cxx11_defaulted_functions - cxx11_constexpr - cxx11_noexcept - cxx11_nullptr - cxx11_rvalue_references - cxx11_template_aliases - cxx11_variadic_templates ] ] ; - - boost-install boost_histogram_python ; } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 new file mode 100644 index 00000000..cd7efff6 --- /dev/null +++ b/test/Jamfile.v2 @@ -0,0 +1,45 @@ +# Copyright Klemens David Morgenstern, Hans P. Dembinski 2016-2017. Distributed under the Boost +# Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +import testing ; +import regex ; +# import python ; + +project + : requirements + /boost/test//boost_unit_test_framework + /boost/serialization//boost_serialization + static +; + +rule histogram-all-tests { + local toolset = + clang:"-std=c++11 -pedantic -Wall -Wextra -ftemplate-depth=256" + darwin:"-std=c++11 -pedantic -Wall -Wextra -ftemplate-depth=256" + ; + + local result ; + + local sources = [ glob-tree *_test.cpp ] ; + for local source in $(sources) + { + local target = [ regex.replace $(source) "\_test.cpp" "" ] ; + target = [ regex.replace $(target) "/" "." ] ; + result += [ run $(source) : : : $(toolset) : test.$(target) ] ; + } + + return $(result) ; +} + +test-suite histogram : [ histogram-all-tests ] ; + +# how to make python_suite_test.py? + +test-suite minimal : histogram ; +test-suite full : histogram ; +test-suite extra : histogram ; + +explicit histogram ; +explicit minimal ; +explicit extra ; diff --git a/test/check/axis_size.cpp b/test/axis_size.cpp similarity index 100% rename from test/check/axis_size.cpp rename to test/axis_size.cpp diff --git a/test/container_storage_test.cpp b/test/container_storage_test.cpp index 7bc00949..07f8ba61 100644 --- a/test/container_storage_test.cpp +++ b/test/container_storage_test.cpp @@ -21,17 +21,17 @@ using namespace boost::histogram; BOOST_AUTO_TEST_CASE(ctor) { container_storage> a(1); - BOOST_CHECK_EQUAL(a.size(), 1); - BOOST_CHECK_EQUAL(a.value(0), 0); + BOOST_CHECK_EQUAL(a.size(), 1u); + BOOST_CHECK_EQUAL(a.value(0), 0u); container_storage> b(1); - BOOST_CHECK_EQUAL(b.size(), 1); - BOOST_CHECK_EQUAL(b.value(0), 0); + BOOST_CHECK_EQUAL(b.size(), 1u); + BOOST_CHECK_EQUAL(b.value(0), 0u); container_storage> c(1); - BOOST_CHECK_EQUAL(c.size(), 1); - BOOST_CHECK_EQUAL(c.value(0), 0); + BOOST_CHECK_EQUAL(c.size(), 1u); + BOOST_CHECK_EQUAL(c.value(0), 0u); container_storage> d(1); - BOOST_CHECK_EQUAL(d.size(), 1); - BOOST_CHECK_EQUAL(d.value(0), 0); + BOOST_CHECK_EQUAL(d.size(), 1u); + BOOST_CHECK_EQUAL(d.value(0), 0u); } BOOST_AUTO_TEST_CASE(increase) @@ -42,11 +42,11 @@ BOOST_AUTO_TEST_CASE(increase) b.increase(0); c.increase(0); c.increase(0); d.increase(0); - BOOST_CHECK_EQUAL(a.value(0), 1.0); - BOOST_CHECK_EQUAL(b.value(0), 1.0); - BOOST_CHECK_EQUAL(c.value(0), 2.0); - BOOST_CHECK_EQUAL(d.value(0), 1.0); - BOOST_CHECK_EQUAL(d.value(1), 0.0); + BOOST_CHECK_EQUAL(a.value(0), 1u); + BOOST_CHECK_EQUAL(b.value(0), 1u); + BOOST_CHECK_EQUAL(c.value(0), 2u); + BOOST_CHECK_EQUAL(d.value(0), 1u); + BOOST_CHECK_EQUAL(d.value(1), 0u); BOOST_CHECK(a == a); BOOST_CHECK(a == b); BOOST_CHECK(!(a == c)); @@ -67,13 +67,13 @@ BOOST_AUTO_TEST_CASE(copy) BOOST_CHECK(!(a == b)); b = a; BOOST_CHECK(a == b); - BOOST_CHECK_EQUAL(b.size(), 1); - BOOST_CHECK_EQUAL(b.value(0), 1.0); + BOOST_CHECK_EQUAL(b.size(), 1u); + BOOST_CHECK_EQUAL(b.value(0), 1u); decltype(a) c(a); BOOST_CHECK(a == c); - BOOST_CHECK_EQUAL(c.size(), 1); - BOOST_CHECK_EQUAL(c.value(0), 1.0); + BOOST_CHECK_EQUAL(c.size(), 1u); + BOOST_CHECK_EQUAL(c.value(0), 1u); container_storage> d(1); BOOST_CHECK(!(a == d)); @@ -104,10 +104,11 @@ BOOST_AUTO_TEST_CASE(move) decltype(a) b; BOOST_CHECK(!(a == b)); b = std::move(a); - BOOST_CHECK_EQUAL(a.size(), 0); - BOOST_CHECK_EQUAL(b.size(), 1); - BOOST_CHECK_EQUAL(b.value(0), 1.0); + BOOST_CHECK_EQUAL(a.size(), 0u); + BOOST_CHECK_EQUAL(b.size(), 1u); + BOOST_CHECK_EQUAL(b.value(0), 1u); decltype(a) c(std::move(b)); - BOOST_CHECK_EQUAL(c.size(), 1); - BOOST_CHECK_EQUAL(c.value(0), 1.0); + BOOST_CHECK_EQUAL(c.size(), 1u); + BOOST_CHECK_EQUAL(c.value(0), 1u); + BOOST_CHECK_EQUAL(b.size(), 0u); } diff --git a/test/dynamic_histogram_test.cpp b/test/dynamic_histogram_test.cpp index c8e271ee..5f50e080 100644 --- a/test/dynamic_histogram_test.cpp +++ b/test/dynamic_histogram_test.cpp @@ -27,8 +27,8 @@ namespace mpl = boost::mpl; BOOST_AUTO_TEST_CASE(init_0) { auto h = dynamic_histogram>(); - BOOST_CHECK_EQUAL(h.dim(), 0); - BOOST_CHECK_EQUAL(h.size(), 0); + BOOST_CHECK_EQUAL(h.dim(), 0u); + BOOST_CHECK_EQUAL(h.size(), 0u); auto h2 = dynamic_histogram< default_axes, container_storage> @@ -42,8 +42,8 @@ BOOST_AUTO_TEST_CASE(init_1) default_axes, adaptive_storage<> >(regular_axis{3, -1, 1}); - BOOST_CHECK_EQUAL(h.dim(), 1); - BOOST_CHECK_EQUAL(h.size(), 5); + BOOST_CHECK_EQUAL(h.dim(), 1u); + BOOST_CHECK_EQUAL(h.size(), 5u); BOOST_CHECK_EQUAL(shape(h.axis(0)), 5); auto h2 = dynamic_histogram< default_axes, @@ -58,8 +58,8 @@ BOOST_AUTO_TEST_CASE(init_2) default_axes, adaptive_storage<> >(regular_axis{3, -1, 1}, integer_axis{-1, 1}); - BOOST_CHECK_EQUAL(h.dim(), 2); - BOOST_CHECK_EQUAL(h.size(), 25); + BOOST_CHECK_EQUAL(h.dim(), 2u); + BOOST_CHECK_EQUAL(h.size(), 25u); BOOST_CHECK_EQUAL(shape(h.axis(0)), 5); BOOST_CHECK_EQUAL(shape(h.axis(1)), 5); auto h2 = dynamic_histogram< @@ -75,8 +75,8 @@ BOOST_AUTO_TEST_CASE(init_3) default_axes, adaptive_storage<> >(regular_axis{3, -1, 1}, integer_axis{-1, 1}, polar_axis{3}); - BOOST_CHECK_EQUAL(h.dim(), 3); - BOOST_CHECK_EQUAL(h.size(), 75); + BOOST_CHECK_EQUAL(h.dim(), 3u); + BOOST_CHECK_EQUAL(h.size(), 75u); auto h2 = dynamic_histogram< default_axes, container_storage> @@ -93,8 +93,8 @@ BOOST_AUTO_TEST_CASE(init_4) integer_axis{-1, 1}, polar_axis{3}, variable_axis{-1, 0, 1}); - BOOST_CHECK_EQUAL(h.dim(), 4); - BOOST_CHECK_EQUAL(h.size(), 300); + BOOST_CHECK_EQUAL(h.dim(), 4u); + BOOST_CHECK_EQUAL(h.size(), 300u); auto h2 = dynamic_histogram< default_axes, container_storage> @@ -112,8 +112,8 @@ BOOST_AUTO_TEST_CASE(init_5) polar_axis{3}, variable_axis{-1, 0, 1}, category_axis{"A", "B", "C"}); - BOOST_CHECK_EQUAL(h.dim(), 5); - BOOST_CHECK_EQUAL(h.size(), 900); + BOOST_CHECK_EQUAL(h.dim(), 5u); + BOOST_CHECK_EQUAL(h.size(), 900u); auto h2 = make_dynamic_histogram(regular_axis{3, -1, 1}, integer_axis{-1, 1}, polar_axis{3}, @@ -163,14 +163,14 @@ BOOST_AUTO_TEST_CASE(move) h.fill(0, 0); const auto href = h; decltype(h) h2(std::move(h)); - BOOST_CHECK_EQUAL(h.dim(), 0); - BOOST_CHECK_EQUAL(h.sum(), 0); - BOOST_CHECK_EQUAL(h.size(), 0); + BOOST_CHECK_EQUAL(h.dim(), 0u); + BOOST_CHECK_EQUAL(h.sum(), 0.0); + BOOST_CHECK_EQUAL(h.size(), 0u); BOOST_CHECK(h2 == href); decltype(h) h3 = std::move(h2); - BOOST_CHECK_EQUAL(h2.dim(), 0); - BOOST_CHECK_EQUAL(h2.sum(), 0); - BOOST_CHECK_EQUAL(h2.size(), 0); + BOOST_CHECK_EQUAL(h2.dim(), 0u); + BOOST_CHECK_EQUAL(h2.sum(), 0.0); + BOOST_CHECK_EQUAL(h2.size(), 0u); BOOST_CHECK(h3 == href); } @@ -215,10 +215,10 @@ BOOST_AUTO_TEST_CASE(d1) h.fill(-1); h.fill(10); - BOOST_CHECK_EQUAL(h.dim(), 1); + BOOST_CHECK_EQUAL(h.dim(), 1u); BOOST_CHECK_EQUAL(bins(h.axis(0)), 2); BOOST_CHECK_EQUAL(shape(h.axis(0)), 4); - BOOST_CHECK_EQUAL(h.sum(), 4); + BOOST_CHECK_EQUAL(h.sum(), 4.0); BOOST_CHECK_THROW(h.value(-2), std::out_of_range); BOOST_CHECK_EQUAL(h.value(-1), 1.0); @@ -243,7 +243,7 @@ BOOST_AUTO_TEST_CASE(d1_2) h.fill(-1); h.fill(10); - BOOST_CHECK_EQUAL(h.dim(), 1); + BOOST_CHECK_EQUAL(h.dim(), 1u); BOOST_CHECK_EQUAL(bins(h.axis(0)), 2); BOOST_CHECK_EQUAL(shape(h.axis(0)), 2); BOOST_CHECK_EQUAL(h.sum(), 2); @@ -268,7 +268,7 @@ BOOST_AUTO_TEST_CASE(d1w) h.fill(-2.0); h.wfill(5, 10); - BOOST_CHECK_EQUAL(h.sum(), 10); + BOOST_CHECK_EQUAL(h.sum(), 10.0); BOOST_CHECK_EQUAL(h.value(-1), 1.0); BOOST_CHECK_EQUAL(h.value(0), 3.0); @@ -292,7 +292,7 @@ BOOST_AUTO_TEST_CASE(d2) double in[2] = {-10., 0.}; h.fill(in, in+2); - BOOST_CHECK_EQUAL(h.dim(), 2); + BOOST_CHECK_EQUAL(h.dim(), 2u); BOOST_CHECK_EQUAL(bins(h.axis(0)), 2); BOOST_CHECK_EQUAL(shape(h.axis(0)), 4); BOOST_CHECK_EQUAL(bins(h.axis(1)), 3); @@ -341,7 +341,7 @@ BOOST_AUTO_TEST_CASE(d2w) h.wfill(5, -1, -10); // is ignored h.wfill(7, -10, 0); // -> -1, 1 - BOOST_CHECK_EQUAL(h.sum(), 18); + BOOST_CHECK_EQUAL(h.sum(), 18.0); BOOST_CHECK_EQUAL(h.value(-1, 0), 0.0); BOOST_CHECK_EQUAL(h.value(-1, 1), 7.0); @@ -424,11 +424,11 @@ BOOST_AUTO_TEST_CASE(add_1) BOOST_CHECK_EQUAL(c.value(3), 0); auto d = b; d += a; - BOOST_CHECK_EQUAL(d.value(-1), 0); - BOOST_CHECK_EQUAL(d.value(0), 1); - BOOST_CHECK_EQUAL(d.value(1), 0); - BOOST_CHECK_EQUAL(d.value(2), 1); - BOOST_CHECK_EQUAL(d.value(3), 0); + BOOST_CHECK_EQUAL(d.value(-1), 0u); + BOOST_CHECK_EQUAL(d.value(0), 1u); + BOOST_CHECK_EQUAL(d.value(1), 0u); + BOOST_CHECK_EQUAL(d.value(2), 1u); + BOOST_CHECK_EQUAL(d.value(3), 0u); } BOOST_AUTO_TEST_CASE(add_2) @@ -456,24 +456,24 @@ BOOST_AUTO_TEST_CASE(add_2) BOOST_AUTO_TEST_CASE(add_3) { - auto a = make_dynamic_histogram_with>>(integer_axis(-1, 1)); + auto a = make_dynamic_histogram_with>>(integer_axis(-1, 1)); auto b = make_dynamic_histogram_with>>(integer_axis(-1, 1)); a.fill(-1); b.fill(1); auto c = a; c += b; - BOOST_CHECK_EQUAL(c.value(-1), 0); - BOOST_CHECK_EQUAL(c.value(0), 1); - BOOST_CHECK_EQUAL(c.value(1), 0); - BOOST_CHECK_EQUAL(c.value(2), 1); - BOOST_CHECK_EQUAL(c.value(3), 0); + BOOST_CHECK_EQUAL(c.value(-1), 0u); + BOOST_CHECK_EQUAL(c.value(0), 1u); + BOOST_CHECK_EQUAL(c.value(1), 0u); + BOOST_CHECK_EQUAL(c.value(2), 1u); + BOOST_CHECK_EQUAL(c.value(3), 0u); auto d = b; d += a; - BOOST_CHECK_EQUAL(d.value(-1), 0); - BOOST_CHECK_EQUAL(d.value(0), 1); - BOOST_CHECK_EQUAL(d.value(1), 0); - BOOST_CHECK_EQUAL(d.value(2), 1); - BOOST_CHECK_EQUAL(d.value(3), 0); + BOOST_CHECK_EQUAL(d.value(-1), 0u); + BOOST_CHECK_EQUAL(d.value(0), 1u); + BOOST_CHECK_EQUAL(d.value(1), 0u); + BOOST_CHECK_EQUAL(d.value(2), 1u); + BOOST_CHECK_EQUAL(d.value(3), 0u); } BOOST_AUTO_TEST_CASE(bad_add) diff --git a/test/check/run_speed_root.sh b/test/run_speed_root.sh similarity index 100% rename from test/check/run_speed_root.sh rename to test/run_speed_root.sh diff --git a/test/check/speed_cpp.cpp b/test/speed_cpp.cpp similarity index 100% rename from test/check/speed_cpp.cpp rename to test/speed_cpp.cpp diff --git a/test/check/speed_root.cpp b/test/speed_root.cpp similarity index 100% rename from test/check/speed_root.cpp rename to test/speed_root.cpp diff --git a/test/check/speed_vs_numpy.py b/test/speed_vs_numpy.py similarity index 100% rename from test/check/speed_vs_numpy.py rename to test/speed_vs_numpy.py