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");