aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorinoas <mail@inoas.com>2022-04-12 20:31:17 +0200
committerLouis Pilfold <louis@lpil.uk>2022-04-16 10:23:34 +0100
commitceb1caf3d6f765b1cc4133679de1075437314fa3 (patch)
tree68b13997bc9c58f9cd99c3bc3231f1ac782effeb /test
parent0be9d80b95b8bf378021ef6fd441b31cb6fdabec (diff)
downloadgleam_stdlib-ceb1caf3d6f765b1cc4133679de1075437314fa3.tar.gz
gleam_stdlib-ceb1caf3d6f765b1cc4133679de1075437314fa3.zip
refactor, cleanup
Diffstat (limited to 'test')
-rw-r--r--test/gleam/float_test.gleam105
-rw-r--r--test/gleam/int_test.gleam25
2 files changed, 55 insertions, 75 deletions
diff --git a/test/gleam/float_test.gleam b/test/gleam/float_test.gleam
index e13112f..c0bf62f 100644
--- a/test/gleam/float_test.gleam
+++ b/test/gleam/float_test.gleam
@@ -4,7 +4,7 @@ import gleam/order
import gleam/list
import gleam/iterator
import gleam/function
-import gleam/io
+import gleam/int
pub fn parse_test() {
"1.23"
@@ -244,6 +244,32 @@ pub fn absolute_value_test() {
|> should.equal(25.2)
}
+pub fn distance_test() {
+ float.distance(0.0, 0.0)
+ |> should.equal(0.0)
+
+ float.distance(1.0, 2.0)
+ |> should.equal(1.0)
+
+ float.distance(2.0, 1.0)
+ |> should.equal(1.0)
+
+ float.distance(-1.0, 0.0)
+ |> should.equal(1.0)
+
+ float.distance(0.0, -1.0)
+ |> should.equal(1.0)
+
+ float.distance(10.0, 20.0)
+ |> should.equal(10.0)
+
+ float.distance(-10.0, -20.0)
+ |> should.equal(10.0)
+
+ float.distance(-10.0, 10.0)
+ |> should.equal(20.0)
+}
+
pub fn power_test() {
float.power(2.0, 2.0)
|> should.equal(4.0)
@@ -327,71 +353,50 @@ pub fn random_uniform_test() {
}
pub fn random_between_test() {
- let one_random_between_test_set = fn(_acc, _e) {
+ let test_boundary = fn(_acc, _e) {
+ float.random_between(-10.0, 0.0)
+ |> fn(x) { x >=. -10.0 && x <. 0.0 }
+ |> should.be_true
float.random_between(0.0, 0.0)
|> should.equal(0.0)
-
- float.random_between(0.0, 1.0)
- |> fn(x) { x >=. 0.0 && x <. 1.0 }
- |> should.be_true
-
- float.random_between(1.0, 0.0)
- |> fn(x) { x >=. 0.0 && x <. 1.0 }
- |> should.be_true
-
- float.random_between(0.0, -1.0)
- |> function.tap(io.debug)
- |> fn(x) { x >=. -1.0 && x <. 0.0 }
+ float.random_between(0.0, 10.0)
+ |> fn(x) { x >=. 0.0 && x <. 10.0 }
|> should.be_true
-
- float.random_between(-1.0, 0.0)
- |> fn(x) { x >=. -1.0 && x <. 0.0 }
+ float.random_between(10.0, 0.0)
+ |> fn(x) { x >=. 0.0 && x <. 10.0 }
|> should.be_true
-
float.random_between(0.0, -10.0)
|> fn(x) { x >=. -10.0 && x <. 0.0 }
|> should.be_true
-
float.random_between(-10.0, 0.0)
|> fn(x) { x >=. -10.0 && x <. 0.0 }
|> should.be_true
-
float.random_between(-10.0, 10.0)
|> fn(x) { x >=. -10.0 && x <. 10.0 }
|> should.be_true
-
- float.random_between(-10.0, 10.0)
+ float.random_between(10.0, -10.0)
|> fn(x) { x >=. -10.0 && x <. 10.0 }
|> should.be_true
}
-
list.range(0, 100)
- |> iterator.from_list
- |> iterator.fold(Nil, one_random_between_test_set)
-}
-
-pub fn random_to_test() {
- let one_random_to_test_set = fn(_acc, _e) {
- float.random_to(0.0)
- |> should.equal(0.0)
-
- float.random_to(-1.0)
- |> fn(x) { x >=. -1.0 && x <. 0.0 }
- |> should.be_true
-
- float.random_to(1.0)
- |> fn(x) { x >=. 0.0 && x <. 1.0 }
- |> should.be_true
-
- float.random_to(10.0)
- |> fn(x) { x >=. 0.0 && x <. 10.0 }
- |> should.be_true
-
- float.random_to(-10.0)
- |> fn(x) { x >=. -10.0 && x <. 0.0 }
- |> should.be_true
+ |> iterator.from_list()
+ |> iterator.fold(Nil, test_boundary)
+
+ let mean_test = fn(iterations: Int, min: Float, max: Float) {
+ let expected_average = float.sum([min, max]) /. 2.0
+ list.range(0, iterations)
+ |> iterator.from_list()
+ |> iterator.fold(
+ from: 0.0,
+ with: fn(acc, _element) { acc +. float.random_between(min, max) },
+ )
+ |> fn(sum) { sum /. int.to_float(iterations) }
+ |> float.loosely_compare(expected_average, 0.1)
+ |> should.equal(order.Eq)
}
- list.range(0, 100)
- |> iterator.from_list
- |> iterator.fold(Nil, one_random_to_test_set)
+ mean_test(100_000, 0.0, 0.0)
+ mean_test(100_000, 0.0, 10.0)
+ mean_test(100_000, -10.0, 10.0)
+ mean_test(100_000, -10.0, 0.0)
+ mean_test(100_000, 0.0, -10.0)
}
diff --git a/test/gleam/int_test.gleam b/test/gleam/int_test.gleam
index 017596a..82612f6 100644
--- a/test/gleam/int_test.gleam
+++ b/test/gleam/int_test.gleam
@@ -337,28 +337,3 @@ pub fn random_between_test() {
|> iterator.from_list
|> iterator.fold(Nil, one_random_between_test_set)
}
-
-pub fn random_to_test() {
- let one_random_to_test_set = fn(_acc, _e) {
- int.random_to(0)
- |> should.equal(0)
- int.random_to(-1)
- |> list.contains([-1], _)
- |> should.be_true
- int.random_to(1)
- |> list.contains([0], _)
- |> should.be_true
- int.random_to(2)
- |> list.contains([0, 1], _)
- |> should.be_true
- int.random_to(3)
- |> list.contains([0, 1, 2], _)
- |> should.be_true
- int.random_to(4)
- |> list.contains([0, 1, 2, 3], _)
- |> should.be_true
- }
- list.range(0, 100)
- |> iterator.from_list
- |> iterator.fold(Nil, one_random_to_test_set)
-}