21 #define BOOST_TEST_MODULE libjmmcg_tests
22 #include <boost/test/included/unit_test.hpp>
24 #include "core/prime_numbers.hpp"
26 using namespace libjmmcg;
28 BOOST_AUTO_TEST_SUITE(prime_numbers_tests)
30 BOOST_AUTO_TEST_CASE(zero_dyn)
32 const auto primes=dyn::sieve_of_eratosthenes(0);
33 BOOST_CHECK(primes.empty());
36 BOOST_AUTO_TEST_CASE(zero_mpl)
38 const auto primes=mpl::sieve_of_eratosthenes<
unsigned long, 0>::result();
39 BOOST_CHECK(primes.empty());
42 BOOST_AUTO_TEST_CASE(one_dyn)
44 const auto primes=dyn::sieve_of_eratosthenes(1);
45 BOOST_CHECK(primes.empty());
48 BOOST_AUTO_TEST_CASE(one_mpl)
50 const auto primes=mpl::sieve_of_eratosthenes<
unsigned long, 1>::result();
51 BOOST_CHECK(primes.empty());
54 BOOST_AUTO_TEST_CASE(two_dyn)
56 const auto primes=dyn::sieve_of_eratosthenes(2);
57 BOOST_CHECK(primes.empty());
60 BOOST_AUTO_TEST_CASE(two_mpl)
62 const auto primes=mpl::sieve_of_eratosthenes<
unsigned long, 2>::result();
63 BOOST_CHECK(primes.empty());
66 BOOST_AUTO_TEST_CASE(three_dyn)
68 const auto primes=dyn::sieve_of_eratosthenes(3);
69 BOOST_CHECK_EQUAL(primes.size(), 1UL);
70 BOOST_CHECK_EQUAL(primes[0], 2UL);
73 BOOST_AUTO_TEST_CASE(three_mpl)
75 const auto primes=mpl::sieve_of_eratosthenes<
unsigned long, 3>::result();
76 BOOST_CHECK_EQUAL(primes.size(), 1UL);
77 BOOST_CHECK_EQUAL(primes[0], 2UL);
80 BOOST_AUTO_TEST_CASE(four_dyn)
82 const auto primes=dyn::sieve_of_eratosthenes(4);
83 BOOST_CHECK_EQUAL(primes.size(), 2UL);
84 BOOST_CHECK_EQUAL(primes[0], 2UL);
85 BOOST_CHECK_EQUAL(primes[1], 3UL);
88 BOOST_AUTO_TEST_CASE(four_mpl)
90 const auto primes=mpl::sieve_of_eratosthenes<
unsigned long, 4>::result();
91 BOOST_CHECK_EQUAL(primes.size(), 2UL);
92 BOOST_CHECK_EQUAL(primes[0], 2UL);
93 BOOST_CHECK_EQUAL(primes[1], 3UL);
96 BOOST_AUTO_TEST_CASE(ten_dyn)
98 const auto primes=dyn::sieve_of_eratosthenes(10);
99 BOOST_CHECK_EQUAL(primes.size(), 4UL);
100 BOOST_CHECK_EQUAL(primes[0], 2UL);
101 BOOST_CHECK_EQUAL(primes[1], 3UL);
102 BOOST_CHECK_EQUAL(primes[2], 5UL);
103 BOOST_CHECK_EQUAL(primes[3], 7UL);
106 BOOST_AUTO_TEST_CASE(ten_mpl)
108 const auto primes=mpl::sieve_of_eratosthenes<
unsigned long, 10>::result();
109 BOOST_CHECK_EQUAL(primes.size(), 4UL);
110 BOOST_CHECK_EQUAL(primes[0], 2UL);
111 BOOST_CHECK_EQUAL(primes[1], 3UL);
112 BOOST_CHECK_EQUAL(primes[2], 5UL);
113 BOOST_CHECK_EQUAL(primes[3], 7UL);
116 BOOST_AUTO_TEST_SUITE_END()