aboutsummaryrefslogtreecommitdiff
path: root/test/result_test.gleam
diff options
context:
space:
mode:
Diffstat (limited to 'test/result_test.gleam')
-rw-r--r--test/result_test.gleam85
1 files changed, 85 insertions, 0 deletions
diff --git a/test/result_test.gleam b/test/result_test.gleam
new file mode 100644
index 0000000..36d208e
--- /dev/null
+++ b/test/result_test.gleam
@@ -0,0 +1,85 @@
+import expect
+import result
+
+pub fn is_ok_test() {
+ result:is_ok(Ok(1)) |> expect:true
+ result:is_ok(Error(1)) |> expect:false
+}
+
+pub fn is_error_test() {
+ result:is_error(Ok(1))
+ |> expect:false
+
+ result:is_error(Error(1))
+ |> expect:true
+}
+
+pub fn map_test() {
+ Ok(1)
+ |> result:map(_, fn(x) { x + 1 })
+ |> expect:equal(_, Ok(2))
+
+ Ok(1)
+ |> result:map(_, fn(_) { "2" })
+ |> expect:equal(_, Ok("2"))
+
+ Error(1)
+ |> result:map(_, fn(x) { x + 1 })
+ |> expect:equal(_, Error(1))
+}
+
+pub fn map_error_test() {
+ Ok(1)
+ |> result:map_error(_, fn(x) { x + 1 })
+ |> expect:equal(_, Ok(1))
+
+ Error(1)
+ |> result:map_error(_, fn(x) { x + 1 })
+ |> expect:equal(_, Error(2))
+}
+
+pub fn flatten_test() {
+ Ok(Ok(1))
+ |> result:flatten
+ |> expect:equal(_, Ok(1))
+
+ Ok(Error(1))
+ |> result:flatten
+ |> expect:equal(_, Error(1))
+
+ Error(1)
+ |> result:flatten
+ |> expect:equal(_, Error(1))
+
+ Error(Error(1))
+ |> result:flatten
+ |> expect:equal(_, Error(Error(1)))
+}
+
+pub fn then_test() {
+ Error(1)
+ |> result:then(_, fn(x) { Ok(x + 1) })
+ |> expect:equal(_, Error(1))
+
+ Ok(1)
+ |> result:then(_, fn(x) { Ok(x + 1) })
+ |> expect:equal(_, Ok(2))
+
+ Ok(1)
+ |> result:then(_, fn(_) { Ok("type change") })
+ |> expect:equal(_, Ok("type change"))
+
+ Ok(1)
+ |> result:then(_, fn(_) { Error(1) })
+ |> expect:equal(_, Error(1))
+}
+
+pub fn unwrap_test() {
+ Ok(1)
+ |> result:unwrap(_, 50)
+ |> expect:equal(_, 1)
+
+ Error("nope")
+ |> result:unwrap(_, 50)
+ |> expect:equal(_, 50)
+}