39 lines
997 B
Plaintext
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))
|