[poincare] Fix tests: randint(a,b) might return b

This commit is contained in:
Émilie Feral
2018-05-04 13:47:44 +02:00
committed by Ecco
parent 5d9f66df28
commit 11ae2da6c5

View File

@@ -8,11 +8,12 @@
using namespace Poincare;
template<typename T>
void assert_exp_is_bounded(Expression * exp, T lowBound, T upBound) {
void assert_exp_is_bounded(Expression * exp, T lowBound, T upBound, bool upBoundIncluded = false) {
GlobalContext globalContext;
Expression * result = exp->approximate<T>(globalContext);
assert(result->type() == Expression::Type::Complex);
assert(static_cast<const Complex<T> *>(result)->a() < upBound && static_cast<const Complex<T> *>(result)->a() >= lowBound);
assert(static_cast<const Complex<T> *>(result)->a() >= lowBound);
assert(static_cast<const Complex<T> *>(result)->a() < upBound || (static_cast<const Complex<T> *>(result)->a() == upBound && upBoundIncluded));
delete result;
}
@@ -286,8 +287,8 @@ QUIZ_CASE(poincare_function_evaluate) {
delete exp;
exp = parse_expression("randint(4,45)");
assert_exp_is_bounded(exp, 4.0f, 45.0f);
assert_exp_is_bounded(exp, 4.0, 45.0);
assert_exp_is_bounded(exp, 4.0f, 45.0f, true);
assert_exp_is_bounded(exp, 4.0, 45.0, true);
delete exp;
}