slovo/tests/stdin-result.slo
2026-05-22 08:38:43 +02:00

39 lines
997 B
Plaintext

(module main)
(fn stdin_result () -> (result string i32)
(std.io.read_stdin_result))
(fn stdin_text_or_empty ((value (result string i32))) -> string
(match value
((ok text)
text)
((err code)
"")))
(fn stdin_len_or_code ((value (result string i32))) -> i32
(match value
((ok text)
(std.string.len text))
((err code)
code)))
(fn stdin_ok_len () -> i32
(std.string.len (unwrap_ok (stdin_result))))
(test "stdin result test runner returns ok"
(is_ok (stdin_result)))
(test "stdin result payload length matches match"
(let value (result string i32) (stdin_result))
(= (std.string.len (unwrap_ok value)) (stdin_len_or_code value)))
(test "stdin result match observes ok payload"
(let value (result string i32) (stdin_result))
(= (std.string.len (stdin_text_or_empty value)) (stdin_len_or_code value)))
(fn main () -> i32
(let value (result string i32) (stdin_result))
(if (is_ok value)
(std.string.len (unwrap_ok value))
1))