/*
 * NICE-Core - efficient algebra and computer vision methods
 *  - libfbasics - An core/basics/template for new NICE libraries
 * See file License for license information.
 */

#ifdef NICE_USELIB_CPPUNIT
#include "Testcasts.h"
#include <string>
#include <exception>
#include <core/basics/types.h>

using namespace NICE;

CPPUNIT_TEST_SUITE_REGISTRATION( Testcasts );

void Testcasts::setUp() {
}

void Testcasts::tearDown() {
}

void Testcasts::testConstructor() {
}

void Testcasts::testCasts() {
{
    float x=1.56;
    float y=1.34;
    CPPUNIT_ASSERT_EQUAL(2, round_to_nearest_cast<int>(x));
    CPPUNIT_ASSERT_EQUAL(1, round_to_nearest_cast<int>(y));
    CPPUNIT_ASSERT_EQUAL(-2, round_to_nearest_cast<int>(-x));
    CPPUNIT_ASSERT_EQUAL(-1, round_to_nearest_cast<int>(-y));
 }
{
    double x=1.56;
    double y=1.34;
    CPPUNIT_ASSERT_EQUAL(static_cast<unsigned char>(2), round_to_nearest_cast<unsigned char>(x));
    CPPUNIT_ASSERT_EQUAL(static_cast<char>(1), round_to_nearest_cast<char>(y));
    CPPUNIT_ASSERT_EQUAL(static_cast<char>(-2), round_to_nearest_cast<char>(-x));
    CPPUNIT_ASSERT_EQUAL(static_cast<char>(-1), round_to_nearest_cast<char>(-y));
 }
{
    float x=1.56;
    float y=1.34;
    CPPUNIT_ASSERT_EQUAL(2l, round_to_nearest_cast<long>(x));
    CPPUNIT_ASSERT_EQUAL(1ul, round_to_nearest_cast<unsigned long>(y));
    CPPUNIT_ASSERT_EQUAL(-2l, round_to_nearest_cast<long>(-x));
    CPPUNIT_ASSERT_EQUAL(-1l, round_to_nearest_cast<long>(-y));
 }
}
#endif
