aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gleam/int.gleam15
-rw-r--r--test/gleam/int_test.gleam26
2 files changed, 41 insertions, 0 deletions
diff --git a/src/gleam/int.gleam b/src/gleam/int.gleam
index 1a31c0c..f23f0f9 100644
--- a/src/gleam/int.gleam
+++ b/src/gleam/int.gleam
@@ -18,6 +18,21 @@ pub fn absolute_value(num: Int) -> Int {
}
}
+/// Returns the absolute distance of the inputs as a positive Int
+///
+/// ## Examples
+///
+/// > distance(-10, 10)
+/// 20
+///
+/// > distance(0.0, -2)
+/// 2
+///
+pub fn distance(a: Int, b: Int) -> Int {
+ a - b
+ |> absolute_value()
+}
+
/// Parses a given string as an int if possible.
///
/// ## Examples
diff --git a/test/gleam/int_test.gleam b/test/gleam/int_test.gleam
index 4cd8e32..510e166 100644
--- a/test/gleam/int_test.gleam
+++ b/test/gleam/int_test.gleam
@@ -15,6 +15,32 @@ pub fn absolute_value_test() {
|> should.equal(123)
}
+pub fn distance_test() {
+ int.distance(0, 0)
+ |> should.equal(0)
+
+ int.distance(1, 2)
+ |> should.equal(1)
+
+ int.distance(2, 1)
+ |> should.equal(1)
+
+ int.distance(-1, 0)
+ |> should.equal(1)
+
+ int.distance(0, -1)
+ |> should.equal(1)
+
+ int.distance(10, 20)
+ |> should.equal(10)
+
+ int.distance(-10, -20)
+ |> should.equal(10)
+
+ int.distance(-10, 10)
+ |> should.equal(20)
+}
+
pub fn clamp_test() {
int.clamp(40, min: 30, max: 50)
|> should.equal(40)