From f3bd3f39f4b0749e2dd1baed5afed46727324432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Fri, 17 Aug 2018 11:45:26 +0200 Subject: [PATCH] [poincare] Add tests on Rational operations --- poincare/test/rational.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/poincare/test/rational.cpp b/poincare/test/rational.cpp index ed425eb52..c988be2b1 100644 --- a/poincare/test/rational.cpp +++ b/poincare/test/rational.cpp @@ -61,6 +61,25 @@ QUIZ_CASE(poincare_rational_properties) { assert(!Rational(-1).isTen()); } +static inline void assert_add_to(const Rational i, const Rational j, const Rational k) { + assert(Rational::NaturalOrder(Rational::Addition(i, j), k) == 0); +} + +QUIZ_CASE(poincare_rational_addition) { + assert_add_to(Rational(1,2), Rational(1), Rational(3,2)); + assert_add_to(Rational("18446744073709551616","4294967296"), Rational(8,9), Rational("38654705672","9")); + assert_add_to(Rational("18446744073709551616","4294967296"), Rational(-8,9), Rational("38654705656",9)); +} + +static inline void assert_pow_to(const Rational i,const NaturalIntegerPointer j, ExpressionNode::Sign jSign, const Rational k) { + assert(Rational::NaturalOrder(Rational::IntegerPower(i, j, jSign), k) == 0); +} + +QUIZ_CASE(poincare_rational_power) { + assert_pow_to(Rational(4,5), Rational(3).naturalIntegerPointerNumerator(), Rational(3).sign(), Rational(64,125)); + assert_pow_to(Rational(4,5), Rational(-3).naturalIntegerPointerNumerator(), Rational(-3).sign(), Rational(125,64)); +} + QUIZ_CASE(poincare_rational_evaluate) { #if 0 assert_parsed_expression_evaluates_to("1/3", "0.3333333");