Blame HalfTest/testFunction.cpp

Packit 8dc392
#include <testFunction.h>
Packit 8dc392
#include "halfFunction.h"
Packit 8dc392
#include <iostream>
Packit 8dc392
#include <assert.h>
Packit 8dc392
Packit 8dc392
Packit 8dc392
using namespace std;
Packit 8dc392
Packit 8dc392
namespace {
Packit 8dc392
Packit 8dc392
Packit 8dc392
float
Packit 8dc392
divideByTwo (float x)
Packit 8dc392
{
Packit 8dc392
    return x / 2;
Packit 8dc392
}
Packit 8dc392
Packit 8dc392
Packit 8dc392
struct timesN
Packit 8dc392
{
Packit 8dc392
    timesN (float n): n (n) {}
Packit 8dc392
    float operator () (float x) {return x * n;}
Packit 8dc392
    float n;
Packit 8dc392
};
Packit 8dc392
Packit 8dc392
Packit 8dc392
} // namespace
Packit 8dc392
Packit 8dc392
Packit 8dc392
void
Packit 8dc392
testFunction ()
Packit 8dc392
{
Packit 8dc392
    cout << "halfFunction<T>\n";
Packit 8dc392
Packit 8dc392
    halfFunction <float> d2 (divideByTwo);
Packit 8dc392
Packit 8dc392
    assert (d2 (0)  ==  0);
Packit 8dc392
    assert (d2 (2)  ==  1);
Packit 8dc392
    assert (d2 (-2) == -1);
Packit 8dc392
    assert (d2 (HALF_MAX)  ==  HALF_MAX / 2);
Packit 8dc392
    assert (d2 (-HALF_MAX) == -HALF_MAX / 2);
Packit 8dc392
    assert (d2 (half::posInf()) == 0);
Packit 8dc392
    assert (d2 (half::negInf()) == 0);
Packit 8dc392
    assert (d2 (half::qNan())   == 0);
Packit 8dc392
Packit 8dc392
    halfFunction <half> t5 (timesN (5),		// function
Packit 8dc392
			    0, HALF_MAX / 8,	// domain
Packit 8dc392
			    -1,			// default value
Packit 8dc392
			    half::posInf(),	// posInfValue
Packit 8dc392
			    half::negInf(),	// negInfValue
Packit 8dc392
			    half::qNan());	// nanValue
Packit 8dc392
Packit 8dc392
    assert (t5 (0)  ==  0);
Packit 8dc392
    assert (t5 (2)  == 10);
Packit 8dc392
    assert (t5 (-2) == -1);
Packit 8dc392
    assert (t5 (HALF_MAX)  == -1);
Packit 8dc392
    assert (t5 (-HALF_MAX) == -1);
Packit 8dc392
Packit 8dc392
    assert ( t5(half::posInf()).isInfinity());
Packit 8dc392
    assert (!t5(half::posInf()).isNegative());
Packit 8dc392
Packit 8dc392
    assert (t5(half::negInf()).isInfinity());
Packit 8dc392
    assert (t5(half::negInf()).isNegative());
Packit 8dc392
Packit 8dc392
    assert (t5(half::qNan()).isNan());
Packit 8dc392
Packit 8dc392
    cout << "ok\n\n" << flush;
Packit 8dc392
}