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

85 lines
1.8 KiB
Plaintext

program main
fn parse_u64(text: string) -> (result u64 i32)
call std.string.parse_u64_result
var text
fn parsed_text(text: string) -> string
call std.num.u64_to_string
std.result.unwrap_ok
call parse_u64
var text
fn main() -> i32
local let value: (result u64 i32)
call parse_u64
string "42"
if
std.result.is_ok
var value
if
binary =
call std.num.u64_to_string
std.result.unwrap_ok
var value
string "42"
int 0
int 1
std.result.unwrap_err
var value
test "parse u64 zero ok"
binary =
call parsed_text
string "0"
string "0"
test "parse u64 high ok"
binary =
call parsed_text
string "18446744073709551615"
string "18446744073709551615"
test "parse u64 empty err"
local let value: (result u64 i32)
call parse_u64
string ""
if
std.result.is_err
var value
binary =
std.result.unwrap_err
var value
int 1
bool false
test "parse u64 plus err"
local let value: (result u64 i32)
call parse_u64
string "+1"
if
std.result.is_err
var value
binary =
std.result.unwrap_err
var value
int 1
bool false
test "parse u64 negative err"
local let value: (result u64 i32)
call parse_u64
string "-1"
if
std.result.is_err
var value
binary =
std.result.unwrap_err
var value
int 1
bool false
test "parse u64 above range err"
local let value: (result u64 i32)
call parse_u64
string "18446744073709551616"
if
std.result.is_err
var value
binary =
std.result.unwrap_err
var value
int 1
bool false