21 #define BOOST_TEST_MODULE libjmmcg_tests
22 #include <boost/test/included/unit_test.hpp>
24 #include "core/factoring.hpp"
26 using namespace libjmmcg;
30 std::ostream &operator<<(
std::ostream &os, factoring::collection_type
const &c)
noexcept(
false) {
31 std::copy(c.begin(), c.end(), std::ostream_iterator<factoring::collection_type::value_type>(os,
", "));
37 BOOST_AUTO_TEST_SUITE(factoring_tests)
39 BOOST_AUTO_TEST_SUITE(division)
41 BOOST_AUTO_TEST_CASE(check_values) {
42 BOOST_CHECK_EQUAL(factoring::division(1), factoring::collection_type{});
43 BOOST_CHECK_EQUAL(factoring::division(2), factoring::collection_type{2});
44 BOOST_CHECK_EQUAL(factoring::division(3), factoring::collection_type{3});
45 BOOST_CHECK_EQUAL(factoring::division(4), factoring::collection_type{2});
46 BOOST_CHECK_EQUAL(factoring::division(5), factoring::collection_type{5});
47 BOOST_CHECK_EQUAL(factoring::division(6), (factoring::collection_type{2, 3}));
48 BOOST_CHECK_EQUAL(factoring::division(7), factoring::collection_type{7});
49 BOOST_CHECK_EQUAL(factoring::division(8), factoring::collection_type{2});
50 BOOST_CHECK_EQUAL(factoring::division(9), factoring::collection_type{3});
51 BOOST_CHECK_EQUAL(factoring::division(10), (factoring::collection_type{2, 5}));
52 BOOST_CHECK_EQUAL(factoring::division(24), (factoring::collection_type{2, 3}));
53 BOOST_CHECK_EQUAL(factoring::division(30), (factoring::collection_type{2, 3, 5}));
56 BOOST_AUTO_TEST_SUITE_END()
58 BOOST_AUTO_TEST_SUITE(monte_carlo)
75 BOOST_AUTO_TEST_SUITE_END()
77 BOOST_AUTO_TEST_SUITE_END()