mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[poincare] Fixed tests
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user