aboutsummaryrefslogtreecommitdiff
path: root/test/gleam/int_test.gleam
diff options
context:
space:
mode:
Diffstat (limited to 'test/gleam/int_test.gleam')
-rw-r--r--test/gleam/int_test.gleam30
1 files changed, 25 insertions, 5 deletions
diff --git a/test/gleam/int_test.gleam b/test/gleam/int_test.gleam
index 2209490..71c526b 100644
--- a/test/gleam/int_test.gleam
+++ b/test/gleam/int_test.gleam
@@ -257,19 +257,39 @@ pub fn is_odd_test() {
pub fn power_test() {
int.power(2, 2.0)
- |> should.equal(4.0)
+ |> should.equal(Ok(4.0))
int.power(-5, 3.0)
- |> should.equal(-125.0)
+ |> should.equal(Ok(-125.0))
int.power(10, 0.0)
- |> should.equal(1.0)
+ |> should.equal(Ok(1.0))
int.power(16, 0.5)
- |> should.equal(4.0)
+ |> should.equal(Ok(4.0))
int.power(2, -1.0)
- |> should.equal(0.5)
+ |> should.equal(Ok(0.5))
+
+ // int.power(-1, 0.5) is equivalent to int.square_root(-1) and should
+ // return an error as an imaginary number would otherwise have to be
+ // returned
+ int.power(-1, 0.5)
+ |> should.equal(Error(Nil))
+
+ // Check another case with a negative base and fractional exponent
+ int.power(-1, 1.5)
+ |> should.equal(Error(Nil))
+
+ // float.power(0, -1) is equivalent to 1 / 0 and is expected
+ // to be an error
+ int.power(0, -1.0)
+ |> should.equal(Error(Nil))
+
+ // Check that a negative base and exponent is fine as long as the
+ // exponent is not fractional
+ int.power(-2, -1.0)
+ |> should.equal(Ok(-0.5))
}
pub fn square_root_test() {