slovo/tests/string-parse-i32-result.surface.lower
2026-05-22 08:38:43 +02:00

71 lines
1.5 KiB
Plaintext

program main
fn parse_text(text: string) -> (result i32 i32)
call std.string.parse_i32_result
var text
fn parse_stdin_text() -> (result i32 i32)
local let input: (result string i32)
call std.io.read_stdin_result
match
subject
var input
arm ok text
call std.string.parse_i32_result
var text
arm err code
err i32 i32
var code
fn main() -> i32
local let value: (result i32 i32)
call parse_stdin_text
if
is_ok
var value
unwrap_ok
var value
unwrap_err
var value
test "parse 42 ok"
binary =
unwrap_ok
call parse_text
string "42"
int 42
test "parse negative 7 ok"
binary =
unwrap_ok
call parse_text
string "-7"
int -7
test "parse empty err"
binary =
unwrap_err
call parse_text
string ""
int 1
test "parse trailing byte err"
binary =
unwrap_err
call parse_text
string "12x"
int 1
test "parse overflow err"
binary =
unwrap_err
call parse_text
string "2147483648"
int 1
test "parse stdin text structurally"
local let value: (result i32 i32)
call parse_stdin_text
match
subject
var value
arm ok parsed
binary =
var parsed
var parsed
arm err code
binary =
var code
int 1