[poincare] Discard UnitConversion::Classic mode. This will be done in

Calculation app
This commit is contained in:
Émilie Feral
2020-04-24 17:43:30 +02:00
parent 7b28f760b7
commit 53db27ffeb
4 changed files with 4 additions and 38 deletions

View File

@@ -133,8 +133,7 @@ public:
enum class UnitConversion {
None = 0,
Default,
InternationalSystem,
Classic // km/h, days + hours + minute
InternationalSystem
};
enum class Sign {
Negative = -1,

View File

@@ -442,38 +442,10 @@ Expression Multiplication::shallowBeautify(ExpressionNode::ReductionContext redu
if (unitConversionMode == ExpressionNode::UnitConversion::Default) {
// Find the right unit prefix
Unit::ChooseBestMultipleForValue(&units, &value, reductionContext);
} else if (unitConversionMode == ExpressionNode::UnitConversion::Classic) {
if (Unit::IsISSpeed(units)) {
value *= Unit::MeterPerSecondToKilometerPerHourFactor;
units = Multiplication::Builder(
Unit::Kilometer(),
Power::Builder(
Unit::Hour(),
Rational::Builder(-1)
)
);
}
if (Unit::IsISVolume(units)) {
value *= Unit::CubicMeterToLiterFactor;
units = Unit::Liter();
static_cast<Unit&>(units).chooseBestMultipleForValue(value, 1, reductionContext);
}
if (Unit::IsISEnergy(units)) {
value *= Unit::JouleToWatthourFactor;
Unit w = Unit::Watt();
units = Multiplication::Builder(
w,
Unit::Hour()
);
w.chooseBestMultipleForValue(value, 1, reductionContext);
}
// TODO: what to do if no classic conversion?
}
if (result.isUninitialized()) {
// Build final Expression
result = Multiplication::Builder(Number::FloatNumber(value), units);
static_cast<Multiplication &>(result).mergeSameTypeChildrenInPlace();
}
// Build final Expression
result = Multiplication::Builder(Number::FloatNumber(value), units);
static_cast<Multiplication &>(result).mergeSameTypeChildrenInPlace();
}
} else {
// Step 3: Create a Division if relevant

View File

@@ -14,7 +14,6 @@ constexpr Poincare::ExpressionNode::SymbolicComputation ReplaceDefinedFunctionsW
constexpr Poincare::ExpressionNode::SymbolicComputation ReplaceAllSymbolsWithUndefined = Poincare::ExpressionNode::SymbolicComputation::ReplaceAllSymbolsWithUndefined;
constexpr Poincare::ExpressionNode::UnitConversion NoUnitConversion = Poincare::ExpressionNode::UnitConversion::None;
constexpr Poincare::ExpressionNode::UnitConversion DefaultUnitConversion = Poincare::ExpressionNode::UnitConversion::Default;
constexpr Poincare::ExpressionNode::UnitConversion ClassicUnitConversion = Poincare::ExpressionNode::UnitConversion::Classic;
constexpr Poincare::ExpressionNode::UnitConversion InternationalSystemUnitConversion = Poincare::ExpressionNode::UnitConversion::InternationalSystem;
constexpr Poincare::Preferences::AngleUnit Degree = Poincare::Preferences::AngleUnit::Degree;
constexpr Poincare::Preferences::AngleUnit Radian = Poincare::Preferences::AngleUnit::Radian;

View File

@@ -1284,10 +1284,6 @@ QUIZ_CASE(poincare_simplification_unit_conversion) {
assert_parsed_expression_simplify_to("1000000_cm", "10×_km", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, DefaultUnitConversion);
assert_parsed_expression_simplify_to("1000000_cm", "1000000×_cm", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, NoUnitConversion);
assert_parsed_expression_simplify_to("1000000_cm", "10000×_m", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, InternationalSystemUnitConversion);
assert_parsed_expression_simplify_to("10_m/_h", "0.01×_km×_h^\x12-1\x13", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, ClassicUnitConversion);
assert_parsed_expression_simplify_to("0.2_m^3", "200×_L", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, ClassicUnitConversion);
assert_parsed_expression_simplify_to("0.000012_m^3", "1.2×_cL", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, ClassicUnitConversion);
assert_parsed_expression_simplify_to("3600_J", "1×_W×_h", User, Degree, Cartesian, ReplaceAllDefinedSymbolsWithDefinition, ClassicUnitConversion);
}
QUIZ_CASE(poincare_simplification_user_function) {