Skip to content

Commit

Permalink
Add a test for Float. (#99)
Browse files Browse the repository at this point in the history
  • Loading branch information
s-yata committed Nov 6, 2014
1 parent c41d590 commit 14fc33b
Showing 1 changed file with 257 additions and 1 deletion.
258 changes: 257 additions & 1 deletion test/test_data_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <cassert>
#include <cmath>
#include <iostream>

#include "grnxx/data_types.hpp"
Expand Down Expand Up @@ -455,7 +456,262 @@ void test_int() {
}

void test_float() {
// TODO
assert(grnxx::Float(0.0).type() == grnxx::FLOAT_DATA);
assert(grnxx::Float::min().type() == grnxx::FLOAT_DATA);
assert(grnxx::Float::max().type() == grnxx::FLOAT_DATA);
assert(grnxx::Float::infinity().type() == grnxx::FLOAT_DATA);
assert(grnxx::Float::na().type() == grnxx::FLOAT_DATA);

assert(grnxx::Float(0.0).value() == 0.0);
assert(grnxx::Float::min().value() == grnxx::Float::min_value());
assert(grnxx::Float::max().value() == grnxx::Float::max_value());
assert(grnxx::Float::infinity().value() == grnxx::Float::infinity_value());
assert(std::isnan(grnxx::Float::na().value()));

assert(!grnxx::Float(0.0).is_min());
assert(grnxx::Float::min().is_min());
assert(!grnxx::Float::max().is_min());
assert(!grnxx::Float::infinity().is_min());
assert(!grnxx::Float::na().is_min());

assert(!grnxx::Float(0.0).is_max());
assert(!grnxx::Float::min().is_max());
assert(grnxx::Float::max().is_max());
assert(!grnxx::Float::infinity().is_max());
assert(!grnxx::Float::na().is_max());

assert(grnxx::Float(0.0).is_finite());
assert(grnxx::Float::min().is_finite());
assert(grnxx::Float::max().is_finite());
assert(!grnxx::Float::infinity().is_finite());
assert(!grnxx::Float::na().is_finite());

assert(!grnxx::Float(0.0).is_infinite());
assert(!grnxx::Float::min().is_infinite());
assert(!grnxx::Float::max().is_infinite());
assert(grnxx::Float::infinity().is_infinite());
assert(!grnxx::Float::na().is_infinite());

assert(!grnxx::Float(0.0).is_na());
assert(!grnxx::Float::min().is_na());
assert(!grnxx::Float::max().is_na());
assert(!grnxx::Float::infinity().is_na());
assert(grnxx::Float::na().is_na());

assert(+grnxx::Float(0.0) == grnxx::Float(0.0));
assert(+grnxx::Float(1.0) == grnxx::Float(1.0));
assert(+grnxx::Float::min() == grnxx::Float::min());
assert(+grnxx::Float::max() == grnxx::Float::max());
assert(+grnxx::Float::infinity().is_infinite());
assert((+grnxx::Float::na()).is_na());

assert(-grnxx::Float(0.0) == grnxx::Float(0.0));
assert(-grnxx::Float(1.0) == grnxx::Float(-1.0));
assert(-grnxx::Float::min() == grnxx::Float(-grnxx::Float::min_value()));
assert(-grnxx::Float::max() == grnxx::Float(-grnxx::Float::max_value()));
assert(-grnxx::Float::infinity() ==
grnxx::Float(-grnxx::Float::infinity_value()));
assert((-grnxx::Float::na()).is_na());

assert((grnxx::Float(1.0) + grnxx::Float(1.0)) == grnxx::Float(2.0));
assert((grnxx::Float::max() + grnxx::Float::max()).is_infinite());
assert((grnxx::Float::infinity() + grnxx::Float::min()).is_infinite());
assert((grnxx::Float::infinity() + -grnxx::Float::infinity()).is_na());
assert((grnxx::Float(1.0) + grnxx::Float::na()).is_na());
assert((grnxx::Float::na() + grnxx::Float(1.0)).is_na());
assert((grnxx::Float::na() + grnxx::Float::na()).is_na());

assert((grnxx::Float(1.0) - grnxx::Float(1.0)) == grnxx::Float(0.0));
assert((grnxx::Float::max() - -grnxx::Float::max()).is_infinite());
assert((grnxx::Float::infinity() - grnxx::Float::min()).is_infinite());
assert((grnxx::Float::infinity() - grnxx::Float::infinity()).is_na());
assert((grnxx::Float(1.0) - grnxx::Float::na()).is_na());
assert((grnxx::Float::na() - grnxx::Float(1.0)).is_na());
assert((grnxx::Float::na() - grnxx::Float::na()).is_na());

assert((grnxx::Float(2.0) * grnxx::Float(0.5)) == grnxx::Float(1.0));
assert((grnxx::Float::max() * grnxx::Float::max()).is_infinite());
assert((grnxx::Float::infinity() * grnxx::Float::min()).is_infinite());
assert((grnxx::Float::infinity() * grnxx::Float(0.0)).is_na());
assert((grnxx::Float(1.0) * grnxx::Float::na()).is_na());
assert((grnxx::Float::na() * grnxx::Float(1.0)).is_na());
assert((grnxx::Float::na() * grnxx::Float::na()).is_na());

grnxx::Float object(1.0);

assert((object += grnxx::Float(2.0)) == grnxx::Float(3.0));
assert(object == grnxx::Float(3.0));
assert((object -= grnxx::Float(1.0)) == grnxx::Float(2.0));
assert(object == grnxx::Float(2.0));
assert((object *= grnxx::Float(4.0)) == grnxx::Float(8.0));
assert(object == grnxx::Float(8.0));

object = grnxx::Float(1.0);

assert((object += grnxx::Float::na()).is_na());
assert(object.is_na());
assert((object += grnxx::Float(1.0)).is_na());
assert(object.is_na());

object = grnxx::Float(1.0);

assert((object -= grnxx::Float::na()).is_na());
assert(object.is_na());
assert((object -= grnxx::Float(1.0)).is_na());
assert(object.is_na());

object = grnxx::Float(1.0);

assert((object *= grnxx::Float::na()).is_na());
assert(object.is_na());
assert((object *= grnxx::Float(1.0)).is_na());
assert(object.is_na());

assert((grnxx::Float(1.0) / grnxx::Float(2.0)) == grnxx::Float(0.5));
assert((grnxx::Float(1.0) / grnxx::Float(0.0)).is_infinite());
assert((grnxx::Float(1.0) / grnxx::Float::infinity()) == grnxx::Float(0.0));
assert((grnxx::Float::max() / grnxx::Float::min()).is_infinite());
assert((grnxx::Float::infinity() / grnxx::Float::max()).is_infinite());
assert((grnxx::Float::infinity() / grnxx::Float::infinity()).is_na());
assert((grnxx::Float(0.0) / grnxx::Float(0.0)).is_na());
assert((grnxx::Float(1.0) / grnxx::Float::na()).is_na());
assert((grnxx::Float::na() / grnxx::Float(1.0)).is_na());
assert((grnxx::Float::na() / grnxx::Float::na()).is_na());

assert((grnxx::Float(1.0) % grnxx::Float(2.0)) == grnxx::Float(1.0));
assert((grnxx::Float(1.0) % grnxx::Float(-2.0)) == grnxx::Float(1.0));
assert((grnxx::Float(-1.0) % grnxx::Float(2.0)) == grnxx::Float(-1.0));
assert((grnxx::Float(-1.0) % grnxx::Float(-2.0)) == grnxx::Float(-1.0));
assert((grnxx::Float(1.0) % grnxx::Float::infinity()) == grnxx::Float(1.0));
assert((grnxx::Float::infinity() % grnxx::Float(1.0)).is_na());
assert((grnxx::Float::infinity() % grnxx::Float::infinity()).is_na());
assert((grnxx::Float(0.0) % grnxx::Float(0.0)).is_na());
assert((grnxx::Float(1.0) % grnxx::Float::na()).is_na());
assert((grnxx::Float::na() % grnxx::Float(1.0)).is_na());
assert((grnxx::Float::na() % grnxx::Float::na()).is_na());

object = grnxx::Float(13.0);

assert((object /= grnxx::Float(2.0)) == grnxx::Float(6.5));
assert(object == grnxx::Float(6.5));
assert((object %= grnxx::Float(3.0)) == grnxx::Float(0.5));
assert(object == grnxx::Float(0.5));

object = grnxx::Float(1.0);

assert((object /= grnxx::Float::na()).is_na());
assert(object.is_na());
assert((object /= grnxx::Float(1.0)).is_na());
assert(object.is_na());

object = grnxx::Float(1.0);

assert((object %= grnxx::Float::na()).is_na());
assert(object.is_na());
assert((object %= grnxx::Float(1.0)).is_na());
assert(object.is_na());

assert((grnxx::Float::min() == grnxx::Float::min()).is_true());
assert((grnxx::Float::min() == grnxx::Float::max()).is_false());
assert((grnxx::Float::min() == grnxx::Float::infinity()).is_false());
assert((grnxx::Float::min() == grnxx::Float::na()).is_na());
assert((grnxx::Float::max() == grnxx::Float::min()).is_false());
assert((grnxx::Float::max() == grnxx::Float::max()).is_true());
assert((grnxx::Float::max() == grnxx::Float::infinity()).is_false());
assert((grnxx::Float::max() == grnxx::Float::na()).is_na());
assert((grnxx::Float::infinity() == grnxx::Float::min()).is_false());
assert((grnxx::Float::infinity() == grnxx::Float::max()).is_false());
assert((grnxx::Float::infinity() == grnxx::Float::infinity()).is_true());
assert((grnxx::Float::infinity() == grnxx::Float::na()).is_na());
assert((grnxx::Float::na() == grnxx::Float::min()).is_na());
assert((grnxx::Float::na() == grnxx::Float::max()).is_na());
assert((grnxx::Float::na() == grnxx::Float::infinity()).is_na());
assert((grnxx::Float::na() == grnxx::Float::na()).is_na());

assert((grnxx::Float::min() != grnxx::Float::min()).is_false());
assert((grnxx::Float::min() != grnxx::Float::max()).is_true());
assert((grnxx::Float::min() != grnxx::Float::infinity()).is_true());
assert((grnxx::Float::min() != grnxx::Float::na()).is_na());
assert((grnxx::Float::max() != grnxx::Float::min()).is_true());
assert((grnxx::Float::max() != grnxx::Float::max()).is_false());
assert((grnxx::Float::max() != grnxx::Float::infinity()).is_true());
assert((grnxx::Float::max() != grnxx::Float::na()).is_na());
assert((grnxx::Float::infinity() != grnxx::Float::min()).is_true());
assert((grnxx::Float::infinity() != grnxx::Float::max()).is_true());
assert((grnxx::Float::infinity() != grnxx::Float::infinity()).is_false());
assert((grnxx::Float::infinity() != grnxx::Float::na()).is_na());
assert((grnxx::Float::na() != grnxx::Float::min()).is_na());
assert((grnxx::Float::na() != grnxx::Float::max()).is_na());
assert((grnxx::Float::na() != grnxx::Float::infinity()).is_na());
assert((grnxx::Float::na() != grnxx::Float::na()).is_na());

assert((grnxx::Float::min() < grnxx::Float::min()).is_false());
assert((grnxx::Float::min() < grnxx::Float::max()).is_true());
assert((grnxx::Float::min() < grnxx::Float::infinity()).is_true());
assert((grnxx::Float::min() < grnxx::Float::na()).is_na());
assert((grnxx::Float::max() < grnxx::Float::min()).is_false());
assert((grnxx::Float::max() < grnxx::Float::max()).is_false());
assert((grnxx::Float::max() < grnxx::Float::infinity()).is_true());
assert((grnxx::Float::max() < grnxx::Float::na()).is_na());
assert((grnxx::Float::infinity() < grnxx::Float::min()).is_false());
assert((grnxx::Float::infinity() < grnxx::Float::max()).is_false());
assert((grnxx::Float::infinity() < grnxx::Float::infinity()).is_false());
assert((grnxx::Float::infinity() < grnxx::Float::na()).is_na());
assert((grnxx::Float::na() < grnxx::Float::min()).is_na());
assert((grnxx::Float::na() < grnxx::Float::max()).is_na());
assert((grnxx::Float::na() < grnxx::Float::infinity()).is_na());
assert((grnxx::Float::na() < grnxx::Float::na()).is_na());

assert((grnxx::Float::min() > grnxx::Float::min()).is_false());
assert((grnxx::Float::min() > grnxx::Float::max()).is_false());
assert((grnxx::Float::min() > grnxx::Float::infinity()).is_false());
assert((grnxx::Float::min() > grnxx::Float::na()).is_na());
assert((grnxx::Float::max() > grnxx::Float::min()).is_true());
assert((grnxx::Float::max() > grnxx::Float::max()).is_false());
assert((grnxx::Float::max() > grnxx::Float::infinity()).is_false());
assert((grnxx::Float::max() > grnxx::Float::na()).is_na());
assert((grnxx::Float::infinity() > grnxx::Float::min()).is_true());
assert((grnxx::Float::infinity() > grnxx::Float::max()).is_true());
assert((grnxx::Float::infinity() > grnxx::Float::infinity()).is_false());
assert((grnxx::Float::infinity() > grnxx::Float::na()).is_na());
assert((grnxx::Float::na() > grnxx::Float::min()).is_na());
assert((grnxx::Float::na() > grnxx::Float::max()).is_na());
assert((grnxx::Float::na() > grnxx::Float::infinity()).is_na());
assert((grnxx::Float::na() > grnxx::Float::na()).is_na());

assert((grnxx::Float::min() <= grnxx::Float::min()).is_true());
assert((grnxx::Float::min() <= grnxx::Float::max()).is_true());
assert((grnxx::Float::min() <= grnxx::Float::infinity()).is_true());
assert((grnxx::Float::min() <= grnxx::Float::na()).is_na());
assert((grnxx::Float::max() <= grnxx::Float::min()).is_false());
assert((grnxx::Float::max() <= grnxx::Float::max()).is_true());
assert((grnxx::Float::max() <= grnxx::Float::infinity()).is_true());
assert((grnxx::Float::max() <= grnxx::Float::na()).is_na());
assert((grnxx::Float::infinity() <= grnxx::Float::min()).is_false());
assert((grnxx::Float::infinity() <= grnxx::Float::max()).is_false());
assert((grnxx::Float::infinity() <= grnxx::Float::infinity()).is_true());
assert((grnxx::Float::infinity() <= grnxx::Float::na()).is_na());
assert((grnxx::Float::na() <= grnxx::Float::min()).is_na());
assert((grnxx::Float::na() <= grnxx::Float::max()).is_na());
assert((grnxx::Float::na() <= grnxx::Float::infinity()).is_na());
assert((grnxx::Float::na() <= grnxx::Float::na()).is_na());

assert((grnxx::Float::min() >= grnxx::Float::min()).is_true());
assert((grnxx::Float::min() >= grnxx::Float::max()).is_false());
assert((grnxx::Float::min() >= grnxx::Float::infinity()).is_false());
assert((grnxx::Float::min() >= grnxx::Float::na()).is_na());
assert((grnxx::Float::max() >= grnxx::Float::min()).is_true());
assert((grnxx::Float::max() >= grnxx::Float::max()).is_true());
assert((grnxx::Float::max() >= grnxx::Float::infinity()).is_false());
assert((grnxx::Float::max() >= grnxx::Float::na()).is_na());
assert((grnxx::Float::infinity() >= grnxx::Float::min()).is_true());
assert((grnxx::Float::infinity() >= grnxx::Float::max()).is_true());
assert((grnxx::Float::infinity() >= grnxx::Float::infinity()).is_true());
assert((grnxx::Float::infinity() >= grnxx::Float::na()).is_na());
assert((grnxx::Float::na() >= grnxx::Float::min()).is_na());
assert((grnxx::Float::na() >= grnxx::Float::max()).is_na());
assert((grnxx::Float::na() >= grnxx::Float::infinity()).is_na());
assert((grnxx::Float::na() >= grnxx::Float::na()).is_na());
}

void test_geo_point() {
Expand Down

0 comments on commit 14fc33b

Please sign in to comment.