aboutsummaryrefslogblamecommitdiffstats
path: root/test/utils/math.cpp
blob: 3e3ae5e678cf030e4b4ee6fe550a2af8cb5e7f59 (plain) (tree)

























                                                                        
                         
































































































































                                                                       
 
/*
 * 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);
}