From c98d554328e98c0c2c80e7b2c6dfbc6630812d55 Mon Sep 17 00:00:00 2001 From: Celso Bonutti Filho Date: Wed, 23 Dec 2020 13:43:34 -0300 Subject: [PATCH] test: adds tests for mulCheck and mulWrap --- cli/tests/repl_eval.rs | 5 +++ compiler/gen/tests/gen_num.rs | 67 +++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/cli/tests/repl_eval.rs b/cli/tests/repl_eval.rs index b8829ab8c1..be51eeaeaa 100644 --- a/cli/tests/repl_eval.rs +++ b/cli/tests/repl_eval.rs @@ -270,6 +270,11 @@ mod repl_eval { expect_success("Num.subWrap Num.minInt 1", "9223372036854775807 : I64"); } + #[test] + fn num_mul_wrap() { + expect_success("Num.mulWrap Num.maxInt 2", "-2 : I64"); + } + #[test] fn list_concat() { expect_success( diff --git a/compiler/gen/tests/gen_num.rs b/compiler/gen/tests/gen_num.rs index 8a89f36e96..bfc7430702 100644 --- a/compiler/gen/tests/gen_num.rs +++ b/compiler/gen/tests/gen_num.rs @@ -894,4 +894,71 @@ mod gen_num { f64 ); } + + #[test] + fn int_mul_wrap() { + assert_evals_to!( + indoc!( + r#" + Num.mulWrap Num.maxInt 2 + "# + ), + -2, + i64 + ); + } + + #[test] + fn int_mul_checked() { + assert_evals_to!( + indoc!( + r#" + when Num.mulChecked 20 2 is + Ok v -> v + _ -> -1 + "# + ), + 40, + i64 + ); + + assert_evals_to!( + indoc!( + r#" + when Num.mulChecked Num.maxInt 2 is + Err Overflow -> -1 + Ok v -> v + "# + ), + -1, + i64 + ); + } + + #[test] + fn float_mul_checked() { + assert_evals_to!( + indoc!( + r#" + when Num.mulChecked 20.0 2.0 is + Ok v -> v + Err Overflow -> -1.0 + "# + ), + 40.0, + f64 + ); + + assert_evals_to!( + indoc!( + r#" + when Num.mulChecked 1.7976931348623157e308 2 is + Err Overflow -> -1 + Ok v -> v + "# + ), + -1.0, + f64 + ); + } }