diff --git a/poincare/test/parsing.cpp b/poincare/test/parsing.cpp index 6f8ee725f..e708ffc1a 100644 --- a/poincare/test/parsing.cpp +++ b/poincare/test/parsing.cpp @@ -436,6 +436,24 @@ QUIZ_CASE(poincare_parsing_parse_store) { assert_text_not_parsable("ans→ans"); } +QUIZ_CASE(poincare_parsing_parse_unit_convert) { + Parser p1("_m", nullptr); + Expression meter = p1.parse(); + assert_parsed_expression_is("1→_m", UnitConvert::Builder(BasedInteger::Builder(1), meter)); + Parser p2("_km", nullptr); + Expression kilometer = p2.parse(); + assert_parsed_expression_is("1→_m/_km", UnitConvert::Builder(BasedInteger::Builder(1), Division::Builder(meter, kilometer))); + + assert_text_not_parsable("1→3_m"); + assert_simplify("_m→a", Radian, Real); + assert_simplify("_m→b", Radian, Real); + assert_text_not_parsable("1_km→a×b"); + + // Clean the storage for other tests + Ion::Storage::sharedStorage()->recordNamed("a.exp").destroy(); + Ion::Storage::sharedStorage()->recordNamed("b.exp").destroy(); +} + QUIZ_CASE(poincare_parsing_implicit_multiplication) { assert_text_not_parsable(".1.2"); assert_text_not_parsable("1 2"); diff --git a/poincare/test/simplification.cpp b/poincare/test/simplification.cpp index 2095989fc..3f41edcac 100644 --- a/poincare/test/simplification.cpp +++ b/poincare/test/simplification.cpp @@ -919,6 +919,16 @@ QUIZ_CASE(poincare_simplification_store_matrix) { Ion::Storage::sharedStorage()->recordNamed("f.func").destroy(); } +QUIZ_CASE(poincare_simplification_unit_convert) { + assert_parsed_expression_simplify_to("10_m/_s→_km/_hour", "36×_km/_hour"); + assert_parsed_expression_simplify_to("2_m→_km×_m/_m", "0.002×_km×_m/_m"); + assert_parsed_expression_simplify_to("10_m/_s→_km", Undefined::Name()); + assert_parsed_expression_simplify_to("10_m/_s→_km/_hour", "36×_km/_hour"); + assert_parsed_expression_simplify_to("10_m^2→_mm×_km", "10×_mm×_km"); + assert_parsed_expression_simplify_to("2_hour+2_min→_s", "7320×_s"); + assert_parsed_expression_simplify_to("2×_kg×_m^2×_s^(-2)→_J", "2×_J"); +} + QUIZ_CASE(poincare_simplification_complex_format) { // Real assert_parsed_expression_simplify_to("𝐢", "unreal", User, Radian, Real);