slovo/examples/projects/std-layout-local-string/src/main.slo

297 lines
9.5 KiB
Plaintext

(module main)
(import string (len concat byte_at_result slice_result starts_with ends_with contains index_of_option last_index_of_option trim_ascii_start trim_ascii_end trim_ascii parse_i32_result parse_i32_option parse_u32_result parse_u32_option parse_i64_result parse_i64_option parse_u64_result parse_u64_option parse_f64_result parse_f64_option parse_bool_result parse_bool_option parse_i32_or_zero parse_u32_or_zero parse_i64_or_zero parse_u64_or_zero parse_f64_or_zero parse_bool_or_false parse_i32_or parse_u32_or parse_i64_or parse_u64_or parse_f64_or parse_bool_or))
(fn imported_string_concat () -> string
(concat "slo" "vo"))
(fn imported_string_len_concat_score () -> i32
(+ (len (imported_string_concat)) 37))
(fn imported_string_byte_at_ok () -> bool
(if (= (unwrap_ok (byte_at_result "slovo" 0)) 115)
(if (= (unwrap_ok (byte_at_result "slovo" 3)) 118)
(if (= (unwrap_err (byte_at_result "slovo" -1)) 1)
(= (unwrap_err (byte_at_result "slovo" 5)) 1)
false)
false)
false))
(fn imported_string_slice_ok () -> bool
(if (= (unwrap_ok (slice_result "slovo" 1 3)) "lov")
(if (= (unwrap_ok (slice_result "slovo" 0 5)) "slovo")
(= (unwrap_err (slice_result "slovo" 4 2)) 1)
false)
false))
(fn imported_string_boundaries_ok () -> bool
(if (starts_with "slovo" "slo")
(if (starts_with "slovo" "")
(if (starts_with "slovo" "ovo")
false
(if (ends_with "slovo" "ovo")
(if (ends_with "slovo" "")
(if (ends_with "slovo" "slo")
false
true)
false)
false))
false)
false))
(fn imported_string_parse_result_ok () -> bool
(if (= (unwrap_ok (parse_i32_result "40")) 40)
(if (= (unwrap_ok (parse_u32_result "40")) 40u32)
(if (= (unwrap_ok (parse_i64_result "40")) 40i64)
(if (= (unwrap_ok (parse_u64_result "40")) 40u64)
(if (= (unwrap_ok (parse_f64_result "40.0")) 40.0)
(imported_string_parse_bool_ok)
false)
false)
false)
false)
false))
(fn imported_string_parse_bool_ok () -> bool
(if (unwrap_ok (parse_bool_result "true"))
(= (unwrap_err (parse_bool_result "TRUE")) 1)
false))
(fn imported_string_parse_options_ok () -> bool
(if (match (parse_i32_option "40")
((some payload)
(= payload 40))
((none)
false))
(if (match (parse_i32_option "bad")
((some payload)
false)
((none)
true))
(if (match (parse_u32_option "40")
((some payload)
(= payload 40u32))
((none)
false))
(if (match (parse_u32_option "bad")
((some payload)
false)
((none)
true))
(if (match (parse_i64_option "40")
((some payload)
(= payload 40i64))
((none)
false))
(if (match (parse_i64_option "bad")
((some payload)
false)
((none)
true))
(if (match (parse_u64_option "40")
((some payload)
(= payload 40u64))
((none)
false))
(if (match (parse_u64_option "bad")
((some payload)
false)
((none)
true))
(if (match (parse_f64_option "40.0")
((some payload)
(= payload 40.0))
((none)
false))
(if (match (parse_f64_option "bad")
((some payload)
false)
((none)
true))
(if (match (parse_bool_option "true")
((some payload)
payload)
((none)
false))
(match (parse_bool_option "bad")
((some payload)
false)
((none)
true))
false)
false)
false)
false)
false)
false)
false)
false)
false)
false)
false))
(fn imported_string_parse_integer_fallbacks_ok () -> bool
(if (= (parse_i32_or_zero "40") 40)
(if (= (parse_i32_or_zero "bad") 0)
(if (= (parse_u32_or_zero "40") 40u32)
(if (= (parse_u32_or_zero "bad") 0u32)
(if (= (parse_i64_or_zero "40") 40i64)
(if (= (parse_i64_or_zero "bad") 0i64)
(if (= (parse_u64_or_zero "40") 40u64)
(= (parse_u64_or_zero "bad") 0u64)
false)
false)
false)
false)
false)
false)
false))
(fn imported_string_parse_float_bool_fallbacks_ok () -> bool
(if (= (parse_f64_or_zero "40.0") 40.0)
(if (= (parse_f64_or_zero "bad") 0.0)
(if (parse_bool_or_false "true")
(if (parse_bool_or_false "bad")
false
(if (parse_bool_or_false "false")
false
true))
false)
false)
false))
(fn imported_string_parse_custom_fallbacks_ok () -> bool
(if (= (parse_i32_or "40" 7) 40)
(if (= (parse_i32_or "bad" 7) 7)
(if (= (parse_u32_or "40" 9u32) 40u32)
(if (= (parse_u32_or "bad" 9u32) 9u32)
(if (= (parse_i64_or "40" 9i64) 40i64)
(if (= (parse_i64_or "bad" 9i64) 9i64)
(if (= (parse_u64_or "40" 11u64) 40u64)
(if (= (parse_u64_or "bad" 11u64) 11u64)
(if (= (parse_f64_or "40.0" 1.5) 40.0)
(if (= (parse_f64_or "bad" 1.5) 1.5)
(if (parse_bool_or "true" false)
(if (parse_bool_or "bad" true)
true
false)
false)
false)
false)
false)
false)
false)
false)
false)
false)
false)
false))
(fn imported_option_i32_is_some_value ((actual (option i32)) (expected i32)) -> bool
(match actual
((some payload)
(= payload expected))
((none)
false)))
(fn imported_option_i32_is_none ((actual (option i32))) -> bool
(match actual
((some payload)
false)
((none)
true)))
(fn imported_string_search_ok () -> bool
(if (contains "alpha beta alpha" "beta")
(if (contains "alpha" "z")
false
(if (contains "alpha" "")
(if (imported_option_i32_is_some_value (index_of_option "alpha beta alpha" "alpha") 0)
(if (imported_option_i32_is_none (index_of_option "alpha" "z"))
(if (imported_option_i32_is_some_value (index_of_option "alpha" "") 0)
(if (imported_option_i32_is_some_value (last_index_of_option "alpha beta alpha" "alpha") 11)
(if (imported_option_i32_is_some_value (last_index_of_option "alpha" "") 5)
(imported_option_i32_is_none (last_index_of_option "alpha" "z"))
false)
false)
false)
false)
false)
false))
false))
(fn imported_string_ascii_trim_ok () -> bool
(if (= (trim_ascii_start " \t\nslovo") "slovo")
(if (= (trim_ascii_end "slovo \t\n") "slovo")
(if (= (trim_ascii " \t\nslovo \t\n") "slovo")
(if (= (trim_ascii " \t\n") "")
(= (trim_ascii "slovo") "slovo")
false)
false)
false)
false))
(fn imported_string_helpers_ok () -> bool
(if (= (imported_string_len_concat_score) 42)
(if (imported_string_byte_at_ok)
(if (imported_string_slice_ok)
(if (imported_string_boundaries_ok)
(if (imported_string_parse_result_ok)
(if (imported_string_parse_options_ok)
(if (imported_string_parse_integer_fallbacks_ok)
(if (imported_string_parse_float_bool_fallbacks_ok)
(if (imported_string_parse_custom_fallbacks_ok)
(if (imported_string_search_ok)
(imported_string_ascii_trim_ok)
false)
false)
false)
false)
false)
false)
false)
false)
false)
false))
(fn main () -> i32
(if (imported_string_helpers_ok)
42
1))
(test "explicit local string len concat"
(= (imported_string_len_concat_score) 42))
(test "explicit local string byte_at_result wrapper"
(imported_string_byte_at_ok))
(test "explicit local string slice_result wrapper"
(imported_string_slice_ok))
(test "explicit local string boundary wrappers"
(imported_string_boundaries_ok))
(test "explicit local string parse result wrappers"
(imported_string_parse_result_ok))
(test "explicit local string parse option wrappers"
(imported_string_parse_options_ok))
(test "explicit local string parse integer fallbacks"
(imported_string_parse_integer_fallbacks_ok))
(test "explicit local string parse float bool fallbacks"
(imported_string_parse_float_bool_fallbacks_ok))
(test "explicit local string parse custom fallbacks"
(imported_string_parse_custom_fallbacks_ok))
(test "explicit local string search helpers"
(imported_string_search_ok))
(test "explicit local string ascii trim helpers"
(imported_string_ascii_trim_ok))
(test "explicit local string helpers all"
(= (main) 42))