1 /***************************************************************************
4 copyright : (C) 2004 by Sebastian Stein
5 email : seb.kde@hpfsc.de
7 ***************************************************************************/
9 /***************************************************************************
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
16 ***************************************************************************/
19 #include <boost/test/unit_test.hpp>
20 using boost::unit_test_framework::test_suite
;
21 using boost::unit_test_framework::test_case
;
23 // the class to be tested
24 #include "primenumber.h"
27 class primenumber_test
36 /** test the prime number algorithm */
37 void test_isPrimeNumber()
39 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(0) == 0);
40 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(2) == 1);
41 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(3) == 1);
42 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(4) == 0);
43 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(5) == 1);
44 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(6) == 0);
45 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(7) == 1);
46 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(8) == 0);
47 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(9) == 0);
48 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(23) == 1);
49 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(9) == 0);
50 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(9) == 0);
51 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(6) == 0);
52 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(101) == 1);
53 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(323) == 0); // 17 * 19
54 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(1001) == 0); // 7 * 143
55 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(1002) == 0); // 2 * 501
56 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(3) == 1);
57 BOOST_REQUIRE(m_primenumber
.isPrimeNumber(2) == 1);
60 /** test the get_first() function */
63 BOOST_REQUIRE(m_primenumber
.get_first() == 2);
66 /** test the move and get functions */
67 void test_move_get_func()
69 m_primenumber
.move_first();
70 BOOST_REQUIRE(m_primenumber
.get_current() == 2);
71 BOOST_REQUIRE(m_primenumber
.get_next() == 3);
73 m_primenumber
.move_forward();
74 BOOST_REQUIRE(m_primenumber
.get_current() == 5);
76 m_primenumber
.move_back();
77 BOOST_REQUIRE(m_primenumber
.get_current() == 3);
79 unsigned int tmp
= m_primenumber
.get_last();
80 m_primenumber
.move_last();
81 BOOST_REQUIRE(m_primenumber
.get_current() == tmp
);
83 m_primenumber
.move_forward();
84 BOOST_REQUIRE(m_primenumber
.get_last() != tmp
);
89 // instance of primenumber
90 primenumber m_primenumber
;
93 class primenumber_test_suite
: public test_suite
97 primenumber_test_suite() : test_suite("primenumber_test_suite")
99 // create an instance of the test cases class
100 boost::shared_ptr
<primenumber_test
> instance(new primenumber_test());
102 // create the test cases
103 test_case
* isPrimeNumber_test_case
= BOOST_CLASS_TEST_CASE(
104 &primenumber_test::test_isPrimeNumber
, instance
);
105 test_case
* get_first_test_case
= BOOST_CLASS_TEST_CASE(
106 &primenumber_test::test_get_first
, instance
);
107 test_case
* move_get_func_test_case
= BOOST_CLASS_TEST_CASE(
108 &primenumber_test::test_move_get_func
, instance
);
110 // add the test cases to the test suite
111 add(isPrimeNumber_test_case
);
112 add(get_first_test_case
);
113 add(move_get_func_test_case
);