/*************************************************************************** begin : 2004-05-25 copyright : (C) 2004 by Sebastian Stein email : seb.kde@hpfsc.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ // for BOOST testing #include using boost::unit_test_framework::test_suite; using boost::unit_test_framework::test_case; // the class to be tested #include "primenumber.h" class primenumber_test { public: // constructor primenumber_test() { } /** test the prime number algorithm */ void test_isPrimeNumber() { BOOST_REQUIRE(m_primenumber.isPrimeNumber(0) == 0); BOOST_REQUIRE(m_primenumber.isPrimeNumber(2) == 1); BOOST_REQUIRE(m_primenumber.isPrimeNumber(3) == 1); BOOST_REQUIRE(m_primenumber.isPrimeNumber(4) == 0); BOOST_REQUIRE(m_primenumber.isPrimeNumber(5) == 1); BOOST_REQUIRE(m_primenumber.isPrimeNumber(6) == 0); BOOST_REQUIRE(m_primenumber.isPrimeNumber(7) == 1); BOOST_REQUIRE(m_primenumber.isPrimeNumber(8) == 0); BOOST_REQUIRE(m_primenumber.isPrimeNumber(9) == 0); BOOST_REQUIRE(m_primenumber.isPrimeNumber(23) == 1); BOOST_REQUIRE(m_primenumber.isPrimeNumber(9) == 0); BOOST_REQUIRE(m_primenumber.isPrimeNumber(9) == 0); BOOST_REQUIRE(m_primenumber.isPrimeNumber(6) == 0); BOOST_REQUIRE(m_primenumber.isPrimeNumber(101) == 1); BOOST_REQUIRE(m_primenumber.isPrimeNumber(323) == 0); // 17 * 19 BOOST_REQUIRE(m_primenumber.isPrimeNumber(1001) == 0); // 7 * 143 BOOST_REQUIRE(m_primenumber.isPrimeNumber(1002) == 0); // 2 * 501 BOOST_REQUIRE(m_primenumber.isPrimeNumber(3) == 1); BOOST_REQUIRE(m_primenumber.isPrimeNumber(2) == 1); } /** test the get_first() function */ void test_get_first() { BOOST_REQUIRE(m_primenumber.get_first() == 2); } /** test the move and get functions */ void test_move_get_func() { m_primenumber.move_first(); BOOST_REQUIRE(m_primenumber.get_current() == 2); BOOST_REQUIRE(m_primenumber.get_next() == 3); m_primenumber.move_forward(); BOOST_REQUIRE(m_primenumber.get_current() == 5); m_primenumber.move_back(); BOOST_REQUIRE(m_primenumber.get_current() == 3); unsigned int tmp = m_primenumber.get_last(); m_primenumber.move_last(); BOOST_REQUIRE(m_primenumber.get_current() == tmp); m_primenumber.move_forward(); BOOST_REQUIRE(m_primenumber.get_last() != tmp); } private: // instance of primenumber primenumber m_primenumber; }; class primenumber_test_suite : public test_suite { public: primenumber_test_suite() : test_suite("primenumber_test_suite") { // create an instance of the test cases class boost::shared_ptr instance(new primenumber_test()); // create the test cases test_case* isPrimeNumber_test_case = BOOST_CLASS_TEST_CASE( &primenumber_test::test_isPrimeNumber, instance ); test_case* get_first_test_case = BOOST_CLASS_TEST_CASE( &primenumber_test::test_get_first, instance ); test_case* move_get_func_test_case = BOOST_CLASS_TEST_CASE( &primenumber_test::test_move_get_func, instance ); // add the test cases to the test suite add(isPrimeNumber_test_case); add(get_first_test_case); add(move_get_func_test_case); } };