diff options
-rw-r--r-- | src/gleam/float.gleam | 31 | ||||
-rw-r--r-- | test/gleam/float_test.gleam | 60 |
2 files changed, 26 insertions, 65 deletions
diff --git a/src/gleam/float.gleam b/src/gleam/float.gleam index 9a922c1..fed2fac 100644 --- a/src/gleam/float.gleam +++ b/src/gleam/float.gleam @@ -436,38 +436,23 @@ pub fn random() -> Float /// ## Examples /// /// ```gleam -/// modulo(3.0, 2.0) -/// // -> Ok(1.0) +/// modulo(13.3, by: 3.3) +/// // -> Ok(0.1) /// ``` /// /// ```gleam -/// modulo(1.0, 0.0) -/// // -> Error(Nil) -/// ``` -/// -/// ```gleam -/// modulo(10.0, -1.0) -/// // -> Ok(0.0) -/// ``` -/// -/// ```gleam -/// modulo(13.0, by: 3.0) -/// // -> Ok(1.0) -/// ``` -/// -/// ```gleam -/// modulo(-13.0, by: 3.0) -/// // -> Ok(2.0) +/// modulo(-13.3, by: 3.3) +/// // -> Ok(3.2) /// ``` /// /// ```gleam -/// modulo(13.0, by: -3.0) -/// // -> Ok(-2.0) +/// modulo(13.3, by: -3.3) +/// // -> Ok(-3.2) /// ``` /// /// ```gleam -/// modulo(-13.0, by: -3.0) -/// // -> Ok(-1.0) +/// modulo(-13.3, by: -3.3) +/// // -> Ok(-0.1) /// ``` /// pub fn modulo(dividend: Float, by divisor: Float) -> Result(Float, Nil) { diff --git a/test/gleam/float_test.gleam b/test/gleam/float_test.gleam index 6fb894f..4c49f69 100644 --- a/test/gleam/float_test.gleam +++ b/test/gleam/float_test.gleam @@ -3,6 +3,7 @@ import gleam/int import gleam/iterator import gleam/list import gleam/order +import gleam/result import gleam/should pub fn parse_test() { @@ -385,53 +386,28 @@ pub fn random_test() { } pub fn modulo_test() { - float.modulo(3.0, by: 2.0) - |> should.equal(Ok(1.0)) - - float.modulo(1.0, by: 0.0) + float.modulo(13.3, by: 0.0) |> should.equal(Error(Nil)) - float.modulo(10.0, by: -1.0) - |> should.equal(Ok(0.0)) - - float.modulo(13.0, by: 3.0) - |> should.equal(Ok(1.0)) - - float.modulo(-13.0, by: 3.0) - |> should.equal(Ok(2.0)) - - float.modulo(13.0, by: -3.0) - |> should.equal(Ok(-2.0)) - - float.modulo(-13.0, by: -3.0) - |> should.equal(Ok(-1.0)) - - float.modulo(3.3, 2.3) - |> should.equal(Ok(1.0)) - - float.modulo(13.3, by: 3.0) - |> should.equal(Ok(1.3)) - - float.modulo(13.0, by: 3.3) - |> should.equal(Ok(3.1)) - - float.modulo(-13.3, by: 3.0) - |> should.equal(Ok(1.3)) - - float.modulo(-13.0, by: 3.3) - |> should.equal(Ok(3.1)) - - float.modulo(13.3, by: -3.0) - |> should.equal(Ok(-1.3)) + float.modulo(13.3, by: 3.3) + |> result.unwrap(or: 0.0) + |> float.loosely_equals(with: 0.1, tolerating: 0.001) + |> should.be_true - float.modulo(13.0, by: -3.3) - |> should.equal(Ok(-3.1)) + float.modulo(-13.3, by: 3.3) + |> result.unwrap(or: 0.0) + |> float.loosely_equals(with: 3.2, tolerating: 0.001) + |> should.be_true - float.modulo(-13.3, by: -3.0) - |> should.equal(Ok(1.3)) + float.modulo(13.3, by: -3.3) + |> result.unwrap(or: 0.0) + |> float.loosely_equals(with: -3.2, tolerating: 0.001) + |> should.be_true - float.modulo(-13.0, by: -3.3) - |> should.equal(Ok(3.1)) + float.modulo(-13.3, by: -3.3) + |> result.unwrap(or: 0.0) + |> float.loosely_equals(with: -0.1, tolerating: 0.001) + |> should.be_true } pub fn divide_test() { |