2019-05-13 22:42:17 +02:00
|
|
|
#include "../misc/math.h"
|
2017-09-03 20:13:27 +02:00
|
|
|
#include "../tests/testutils.h"
|
2017-08-02 13:29:22 +02:00
|
|
|
|
|
|
|
#include <cppunit/TestFixture.h>
|
|
|
|
#include <cppunit/extensions/HelperMacros.h>
|
|
|
|
|
|
|
|
using namespace std;
|
2019-06-10 21:56:46 +02:00
|
|
|
using namespace CppUtilities;
|
|
|
|
using namespace CppUtilities::Literals;
|
2017-08-02 13:29:22 +02:00
|
|
|
|
|
|
|
using namespace CPPUNIT_NS;
|
|
|
|
|
2019-06-10 21:56:46 +02:00
|
|
|
namespace CppUtilities {
|
2018-05-05 23:06:51 +02:00
|
|
|
|
|
|
|
static_assert(min(1, 2, 3) == 1, "min");
|
|
|
|
static_assert(min(3, 2, 1) == 1, "min");
|
|
|
|
static_assert(min(3, 4, 2, 1) == 1, "min");
|
|
|
|
static_assert(min(3, 4, -2, 2, 1) == -2, "min");
|
|
|
|
static_assert(max(1, 2, 3) == 3, "max");
|
|
|
|
static_assert(max(3, 2, 1) == 3, "max");
|
|
|
|
static_assert(max(3, 4, 2, 1) == 4, "max");
|
|
|
|
static_assert(max(3, -2, 4, 2, 1) == 4, "max");
|
|
|
|
|
2019-06-10 21:56:46 +02:00
|
|
|
} // namespace CppUtilities
|
2018-05-05 23:06:51 +02:00
|
|
|
|
2017-08-02 13:29:22 +02:00
|
|
|
/*!
|
2019-09-04 18:45:28 +02:00
|
|
|
* \brief The MathTests class tests functions provided by misc/math.h.
|
2017-08-02 13:29:22 +02:00
|
|
|
*/
|
|
|
|
class MathTests : public TestFixture {
|
|
|
|
CPPUNIT_TEST_SUITE(MathTests);
|
|
|
|
CPPUNIT_TEST(testDigitsum);
|
|
|
|
CPPUNIT_TEST(testFactorial);
|
|
|
|
CPPUNIT_TEST(testPowerModulo);
|
|
|
|
CPPUNIT_TEST(testInverseModulo);
|
|
|
|
CPPUNIT_TEST(testOrderModulo);
|
|
|
|
CPPUNIT_TEST_SUITE_END();
|
|
|
|
|
|
|
|
public:
|
|
|
|
void setUp()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
void tearDown()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void testDigitsum();
|
|
|
|
void testFactorial();
|
|
|
|
void testPowerModulo();
|
|
|
|
void testInverseModulo();
|
|
|
|
void testOrderModulo();
|
|
|
|
};
|
|
|
|
|
|
|
|
CPPUNIT_TEST_SUITE_REGISTRATION(MathTests);
|
|
|
|
|
|
|
|
void MathTests::testDigitsum()
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(0, digitsum(0));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(7, digitsum(16));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, digitsum(16, 16));
|
|
|
|
}
|
|
|
|
|
|
|
|
void MathTests::testFactorial()
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(6, factorial(3));
|
|
|
|
}
|
|
|
|
|
|
|
|
void MathTests::testPowerModulo()
|
|
|
|
{
|
2019-05-13 22:42:17 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(25u, powerModulo(5u, 2u, 30u));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(5u, powerModulo(5u, 2u, 20u));
|
2017-08-02 13:29:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void MathTests::testInverseModulo()
|
|
|
|
{
|
2019-05-13 22:42:17 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(-12u, inverseModulo(2u, 25u));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(-8u, inverseModulo(3u, 25u));
|
2017-08-02 13:29:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void MathTests::testOrderModulo()
|
|
|
|
{
|
2019-05-13 22:42:17 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(20u, orderModulo(2u, 25u));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(5u, orderModulo(6u, 25u));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(0u, orderModulo(5u, 25u));
|
2017-08-02 13:29:22 +02:00
|
|
|
}
|