78 lines
2.0 KiB
Plaintext
78 lines
2.0 KiB
Plaintext
(module main)
|
|
|
|
(fn fixture_path () -> string
|
|
"slovo-exp10-host-io-result.txt")
|
|
|
|
(fn ok_text ((value string)) -> (result string i32)
|
|
(ok string i32 value))
|
|
|
|
(fn err_text ((code i32)) -> (result string i32)
|
|
(err string i32 code))
|
|
|
|
(fn result_text_or_error ((value (result string i32))) -> string
|
|
(match value
|
|
((ok payload)
|
|
payload)
|
|
((err code)
|
|
(std.io.print_i32 code)
|
|
"error")))
|
|
|
|
(fn result_text_len_or_code ((value (result string i32))) -> i32
|
|
(match value
|
|
((ok payload)
|
|
(std.string.len payload))
|
|
((err code)
|
|
code)))
|
|
|
|
(fn write_fixture_result () -> (result i32 i32)
|
|
(std.fs.write_text_result (fixture_path) "exp10 host io"))
|
|
|
|
(fn read_fixture_result () -> (result string i32)
|
|
(std.fs.write_text_result (fixture_path) "exp10 host io")
|
|
(std.fs.read_text_result (fixture_path)))
|
|
|
|
(fn missing_env_result () -> (result string i32)
|
|
(std.env.get_result "SLOVO_EXP10_MISSING_ENV"))
|
|
|
|
(fn first_arg_ok_score () -> i32
|
|
(if (< 0 (std.process.argc))
|
|
(if (is_ok (std.process.arg_result 0))
|
|
1
|
|
0)
|
|
0))
|
|
|
|
(fn read_unwrapped_text () -> string
|
|
(unwrap_ok (read_fixture_result)))
|
|
|
|
(fn missing_env_code () -> i32
|
|
(unwrap_err (missing_env_result)))
|
|
|
|
(test "string result constructor ok"
|
|
(= (result_text_or_error (ok_text "constructed")) "constructed"))
|
|
|
|
(test "string result constructor err"
|
|
(= (result_text_len_or_code (err_text 1)) 1))
|
|
|
|
(test "missing env returns err 1"
|
|
(= (missing_env_code) 1))
|
|
|
|
(test "arg result is ok when argc is positive"
|
|
(= (first_arg_ok_score) (if (< 0 (std.process.argc))
|
|
1
|
|
0)))
|
|
|
|
(test "write text result returns ok zero"
|
|
(= (unwrap_ok (write_fixture_result)) 0))
|
|
|
|
(test "read text result returns written text"
|
|
(= (read_unwrapped_text) "exp10 host io"))
|
|
|
|
(test "read text result match observes string payload"
|
|
(= (result_text_len_or_code (read_fixture_result)) 13))
|
|
|
|
(fn main () -> i32
|
|
(std.io.eprint "exp-10 host io result")
|
|
(if (is_ok (write_fixture_result))
|
|
(unwrap_ok (write_fixture_result))
|
|
1))
|