[Groonga-commit] groonga/grnxx at 14fc33b [master] Add a test for Float. (#99)

Back to archive index

susumu.yata null+****@clear*****
Tue Dec 16 10:41:22 JST 2014


susumu.yata	2014-11-06 16:32:37 +0900 (Thu, 06 Nov 2014)

  New Revision: 14fc33b0b8c85da483eadd34bc222a18cf82e9ff
  https://github.com/groonga/grnxx/commit/14fc33b0b8c85da483eadd34bc222a18cf82e9ff

  Message:
    Add a test for Float. (#99)

  Modified files:
    test/test_data_types.cpp

  Modified: test/test_data_types.cpp (+257 -1)
===================================================================
--- test/test_data_types.cpp    2014-11-06 16:06:18 +0900 (ac82948)
+++ test/test_data_types.cpp    2014-11-06 16:32:37 +0900 (9112699)
@@ -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"
@@ -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() {
-------------- next part --------------
HTML����������������������������...
다운로드 



More information about the Groonga-commit mailing list
Back to archive index