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