/*
* UltraStar Deluxe - Karaoke Game
*
* UltraStar Deluxe is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
* $URL$
* $Id$
*/
#include "utils/math.hpp"
#include <exception>
#include <cppunit/extensions/HelperMacros.h>
#include <log4cpp/Category.hh>
namespace usdx
{
class MathTest : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(MathTest);
CPPUNIT_TEST(testMinFirst);
CPPUNIT_TEST(testMinSecond);
CPPUNIT_TEST(testMinFloat);
CPPUNIT_TEST(testMaxFirst);
CPPUNIT_TEST(testMaxSecond);
CPPUNIT_TEST(testMaxFloat);
CPPUNIT_TEST(testAbsPositive);
CPPUNIT_TEST(testAbsNegative);
CPPUNIT_TEST(testAbsFloat);
CPPUNIT_TEST_SUITE_END();
private:
static log4cpp::Category& log;
public:
void setUp()
{
}
void tearDown()
{
}
void testMinFirst()
{
int a = 10;
int b = 20;
int c = Math::min(a, b);
CPPUNIT_ASSERT_EQUAL(10, a);
CPPUNIT_ASSERT_EQUAL(20, b);
CPPUNIT_ASSERT_EQUAL(10, c);
}
void testMinSecond()
{
int a = 20;
int b = 10;
int c = Math::min(a, b);
CPPUNIT_ASSERT_EQUAL(20, a);
CPPUNIT_ASSERT_EQUAL(10, b);
CPPUNIT_ASSERT_EQUAL(10, c);
}
void testMinFloat()
{
float a = 3.15f;
float b = 3.14f;
float c = Math::min(a, b);
CPPUNIT_ASSERT_EQUAL(3.15f, a);
CPPUNIT_ASSERT_EQUAL(3.14f, b);
CPPUNIT_ASSERT_EQUAL(3.14f, c);
}
void testMaxFirst()
{
int a = 10;
int b = 20;
int c = Math::max(a, b);
CPPUNIT_ASSERT_EQUAL(10, a);
CPPUNIT_ASSERT_EQUAL(20, b);
CPPUNIT_ASSERT_EQUAL(20, c);
}
void testMaxSecond()
{
int a = 20;
int b = 10;
int c = Math::max(a, b);
CPPUNIT_ASSERT_EQUAL(20, a);
CPPUNIT_ASSERT_EQUAL(10, b);
CPPUNIT_ASSERT_EQUAL(20, c);
}
void testMaxFloat()
{
float a = 3.15f;
float b = 3.14f;
float c = Math::max(a, b);
CPPUNIT_ASSERT_EQUAL(3.15f, a);
CPPUNIT_ASSERT_EQUAL(3.14f, b);
CPPUNIT_ASSERT_EQUAL(3.15f, c);
}
void testAbsPositive()
{
int a = 10;
int b = Math::abs(a);
CPPUNIT_ASSERT_EQUAL(10, a);
CPPUNIT_ASSERT_EQUAL(10, b);
}
void testAbsNegative()
{
int a = -10;
int b = Math::abs(a);
CPPUNIT_ASSERT_EQUAL(-10, a);
CPPUNIT_ASSERT_EQUAL(10, b);
}
void testAbsFloat()
{
float a = -3.15f;
float b = Math::abs(a);
CPPUNIT_ASSERT_EQUAL(-3.15f, a);
CPPUNIT_ASSERT_EQUAL(3.15f, b);
}
};
log4cpp::Category& MathTest::log =
log4cpp::Category::getInstance("test.usdx.utils.math");
CPPUNIT_TEST_SUITE_REGISTRATION(MathTest);
}