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