mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 16:57:31 +01:00
[poincare/test] Add unit conversion tests
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user