diff options
author | Brett Snyder <bsnyder@digitalocean.com> | 2019-10-03 08:57:15 -0500 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2019-10-03 14:57:15 +0100 |
commit | 81b3ca2b9b3dceedd62fbcef741548ae8a513601 (patch) | |
tree | 6ebb7827be9d5974f70cc94d44ddb2be70b607a3 | |
parent | cc7ba56105a6f8933c2bfd25151061a94471eb23 (diff) | |
download | gleam_stdlib-81b3ca2b9b3dceedd62fbcef741548ae8a513601.tar.gz gleam_stdlib-81b3ca2b9b3dceedd62fbcef741548ae8a513601.zip |
add max() for Int and Float (#266)
-rw-r--r-- | CHANGELOG.md | 4 | ||||
-rw-r--r-- | gen/src/gleam@float.erl | 11 | ||||
-rw-r--r-- | gen/src/gleam@int.erl | 11 | ||||
-rw-r--r-- | gen/test/gleam@float_test.erl | 11 | ||||
-rw-r--r-- | gen/test/gleam@int_test.erl | 10 | ||||
-rw-r--r-- | src/gleam/float.gleam | 7 | ||||
-rw-r--r-- | src/gleam/int.gleam | 7 | ||||
-rw-r--r-- | test/gleam/float_test.gleam | 23 | ||||
-rw-r--r-- | test/gleam/int_test.gleam | 20 |
9 files changed, 98 insertions, 6 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c8370c..f2375c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,8 @@ - The `pair` module gains the `map_first`, and `map_second` functions. - The `string` module gains the `compare` function. -- The `float` module gains the `min` function. -- The `int` module gains the `min` function. +- The `float` module gains the `max`, and `min` functions. +- The `int` module gains the `max`, and `min` functions. ## v0.4.0 - 2019-09-19 diff --git a/gen/src/gleam@float.erl b/gen/src/gleam@float.erl index 625ba56..7eb18cf 100644 --- a/gen/src/gleam@float.erl +++ b/gen/src/gleam@float.erl @@ -1,7 +1,7 @@ -module(gleam@float). -compile(no_auto_import). --export([parse/1, to_string/1, compare/2, min/2, ceiling/1, floor/1, round/1, truncate/1]). +-export([parse/1, to_string/1, compare/2, min/2, max/2, ceiling/1, floor/1, round/1, truncate/1]). parse(A) -> gleam_stdlib:parse_float(A). @@ -33,6 +33,15 @@ min(A, B) -> B end. +max(A, B) -> + case A > B of + true -> + A; + + false -> + B + end. + ceiling(A) -> math:ceil(A). diff --git a/gen/src/gleam@int.erl b/gen/src/gleam@int.erl index de9ce8b..1449d09 100644 --- a/gen/src/gleam@int.erl +++ b/gen/src/gleam@int.erl @@ -1,7 +1,7 @@ -module(gleam@int). -compile(no_auto_import). --export([parse/1, to_string/1, to_base_string/2, compare/2, min/2]). +-export([parse/1, to_string/1, to_base_string/2, compare/2, min/2, max/2]). parse(A) -> gleam_stdlib:parse_int(A). @@ -35,3 +35,12 @@ min(A, B) -> false -> B end. + +max(A, B) -> + case A > B of + true -> + A; + + false -> + B + end. diff --git a/gen/test/gleam@float_test.erl b/gen/test/gleam@float_test.erl index d60997e..8926ce1 100644 --- a/gen/test/gleam@float_test.erl +++ b/gen/test/gleam@float_test.erl @@ -1,7 +1,7 @@ -module(gleam@float_test). -compile(no_auto_import). --export([parse_test/0, to_string_test/0, compare_test/0, ceiling_test/0, floor_test/0, round_test/0, truncate_test/0, min_test/0]). +-export([parse_test/0, to_string_test/0, compare_test/0, ceiling_test/0, floor_test/0, round_test/0, truncate_test/0, min_test/0, max_test/0]). parse_test() -> gleam@expect:equal(gleam@float:parse(<<"1.23">>), {ok, 1.23}), @@ -57,3 +57,12 @@ min_test() -> gleam@expect:equal(gleam@float:min(-2.2, -2.2), -2.2), gleam@expect:equal(gleam@float:min(-1.0, -1.0), -1.0), gleam@expect:equal(gleam@float:min(-1.1, -1.0), -1.1). + +max_test() -> + gleam@expect:equal(gleam@float:max(0.0, 0.0), 0.0), + gleam@expect:equal(gleam@float:max(0.3, 1.5), 1.5), + gleam@expect:equal(gleam@float:max(1.0, 0.0), 1.0), + gleam@expect:equal(gleam@float:max(-1.7, 2.5), 2.5), + gleam@expect:equal(gleam@float:max(-2.2, -2.2), -2.2), + gleam@expect:equal(gleam@float:max(-1.0, -1.0), -1.0), + gleam@expect:equal(gleam@float:max(-1.1, -1.0), -1.0). diff --git a/gen/test/gleam@int_test.erl b/gen/test/gleam@int_test.erl index ce8936c..48eeba1 100644 --- a/gen/test/gleam@int_test.erl +++ b/gen/test/gleam@int_test.erl @@ -1,7 +1,7 @@ -module(gleam@int_test). -compile(no_auto_import). --export([to_string/0, parse/0, to_base_string/0, compare_test/0, min_test/0]). +-export([to_string/0, parse/0, to_base_string/0, compare_test/0, min_test/0, max_test/0]). to_string() -> gleam@expect:equal(gleam@int:to_string(123), <<"123">>), @@ -35,3 +35,11 @@ min_test() -> gleam@expect:equal(gleam@int:min(-1, 2), -1), gleam@expect:equal(gleam@int:min(2, -2), -2), gleam@expect:equal(gleam@int:min(-1, -1), -1). + +max_test() -> + gleam@expect:equal(gleam@int:max(0, 0), 0), + gleam@expect:equal(gleam@int:max(0, 1), 1), + gleam@expect:equal(gleam@int:max(1, 0), 1), + gleam@expect:equal(gleam@int:max(-1, 2), 2), + gleam@expect:equal(gleam@int:max(2, -2), 2), + gleam@expect:equal(gleam@int:max(-1, -1), -1). diff --git a/src/gleam/float.gleam b/src/gleam/float.gleam index 3929218..d27587c 100644 --- a/src/gleam/float.gleam +++ b/src/gleam/float.gleam @@ -28,6 +28,13 @@ pub fn min(a, b) { } } +pub fn max(a, b) { + case a >. b { + | True -> a + | False -> b + } +} + pub external fn ceiling(Float) -> Float = "math" "ceil"; pub external fn floor(Float) -> Float = "math" "floor"; diff --git a/src/gleam/int.gleam b/src/gleam/int.gleam index ddd0ac5..2171852 100644 --- a/src/gleam/int.gleam +++ b/src/gleam/int.gleam @@ -24,3 +24,10 @@ pub fn min(a, b) { } } +pub fn max(a, b) { + case a > b { + | True -> a + | False -> b + } +} + diff --git a/test/gleam/float_test.gleam b/test/gleam/float_test.gleam index 88c9c64..f10565c 100644 --- a/test/gleam/float_test.gleam +++ b/test/gleam/float_test.gleam @@ -160,3 +160,26 @@ pub fn min_test() { float.min(-1.1, -1.) |> expect.equal(_, -1.1) } + +pub fn max_test() { + float.max(0., 0.) + |> expect.equal(_, 0.) + + float.max(0.3, 1.5) + |> expect.equal(_, 1.5) + + float.max(1., 0.) + |> expect.equal(_, 1.) + + float.max(-1.7, 2.5) + |> expect.equal(_, 2.5) + + float.max(-2.2, -2.2) + |> expect.equal(_, -2.2) + + float.max(-1., -1.) + |> expect.equal(_, -1.) + + float.max(-1.1, -1.) + |> expect.equal(_, -1.) +} diff --git a/test/gleam/int_test.gleam b/test/gleam/int_test.gleam index 5ef20a7..7a8320f 100644 --- a/test/gleam/int_test.gleam +++ b/test/gleam/int_test.gleam @@ -91,3 +91,23 @@ pub fn min_test() { int.min(-1, -1) |> expect.equal(_, -1) } + +pub fn max_test() { + int.max(0, 0) + |> expect.equal(_, 0) + + int.max(0, 1) + |> expect.equal(_, 1) + + int.max(1, 0) + |> expect.equal(_, 1) + + int.max(-1, 2) + |> expect.equal(_, 2) + + int.max(2, -2) + |> expect.equal(_, 2) + + int.max(-1, -1) + |> expect.equal(_, -1) +} |