[poincare] Fixed tests

This commit is contained in:
Laury
2022-06-25 23:35:38 +02:00
parent 4893b73917
commit 25d4793441
4 changed files with 14 additions and 7 deletions

View File

@@ -705,7 +705,7 @@ public:
static Unit Builder(const Representative * representative, const Prefix * prefix);
static bool CanParse(const char * symbol, size_t length, const Representative * * representative, const Prefix * * prefix);
static void ChooseBestRepresentativeAndPrefixForValue(Expression units, double * value, ExpressionNode::ReductionContext reductionContext);
static bool ShouldDisplayAdditionalOutputs(double value, Expression unit, Preferences::UnitFormat unitFormat);
static bool HaveAdditionalOutputs(double value, Expression unit, Preferences::UnitFormat unitFormat);
static int SetAdditionalExpressionsAndMessage(Expression units, double value, Expression * dest, int availableLength, ExpressionNode::ReductionContext reductionContext, I18n::Message * message);
static Expression BuildSplit(double value, const Unit * units, int length, ExpressionNode::ReductionContext reductionContext);
static Expression ConvertTemperatureUnits(Expression e, Unit unit, ExpressionNode::ReductionContext reductionContext);

View File

@@ -11,6 +11,8 @@
#include <limits.h>
#include <utility>
#include <apps/i18n.h>
#include <apps/global_preferences.h>
namespace Poincare {
@@ -765,7 +767,7 @@ void Unit::ChooseBestRepresentativeAndPrefixForValue(Expression units, double *
}
}
bool Unit::ShouldDisplayAdditionalOutputs(double value, Expression unit, Preferences::UnitFormat unitFormat) {
bool Unit::HaveAdditionalOutputs(double value, Expression unit, Preferences::UnitFormat unitFormat) {
if (unit.isUninitialized()) {
return false;
}
@@ -776,7 +778,8 @@ bool Unit::ShouldDisplayAdditionalOutputs(double value, Expression unit, Prefere
return e.type() == ExpressionNode::Type::Unit && !e.convert<Unit>().isBaseUnit();
};
return representative != nullptr || unit.hasExpression(isNonBase, nullptr);
return (representative != nullptr && representative->hasSpecialAdditionalExpressions(value, unitFormat))
|| unit.hasExpression(isNonBase, nullptr);
}
int Unit::SetAdditionalExpressionsAndMessage(Expression units, double value, Expression * dest, int availableLength, ExpressionNode::ReductionContext reductionContext, I18n::Message * message) {
@@ -788,7 +791,10 @@ int Unit::SetAdditionalExpressionsAndMessage(Expression units, double value, Exp
return 0;
}
*message = representative->dimensionMessage();
return representative->setAdditionalExpressions(value, dest, availableLength, reductionContext);
if (Unit::HaveAdditionalOutputs(value, units, reductionContext.unitFormat())) {
return representative->setAdditionalExpressions(value, dest, availableLength, reductionContext);
}
return 0;
}
Expression Unit::BuildSplit(double value, const Unit * units, int length, ExpressionNode::ReductionContext reductionContext) {

View File

@@ -452,7 +452,7 @@ void assert_additional_results_compute_to(const char * expression, const char *
Expression e = parse_expression(expression, &globalContext, false).reduceAndRemoveUnit(reductionContext, &units);
double value = e.approximateToScalar<double>(&globalContext, Cartesian, Degree);
if (!Unit::ShouldDisplayAdditionalOutputs(value, units, unitFormat)) {
if (!Unit::HaveAdditionalOutputs(value, units, unitFormat)) {
quiz_assert(length == 0);
return;
}