slovo/examples/projects/std-import-num/src/main.slo
2026-05-22 08:38:43 +02:00

71 lines
1.9 KiB
Plaintext

(module main)
(import std.num (i32_to_i64 i32_to_f64 i64_to_f64 i64_to_i32_result f64_to_i32_result f64_to_i64_result i32_to_string u32_to_string i64_to_string u64_to_string f64_to_string i64_to_i32_or f64_to_i32_or f64_to_i64_or))
(fn imported_num_widening_ok () -> bool
(if (= (i32_to_i64 42) 42i64)
(if (= (i32_to_f64 42) 42.0)
(= (i64_to_f64 42i64) 42.0)
false)
false))
(fn imported_num_checked_ok () -> bool
(if (= (unwrap_ok (i64_to_i32_result 42i64)) 42)
(if (= (unwrap_ok (f64_to_i32_result 42.0)) 42)
(= (unwrap_ok (f64_to_i64_result 42.0)) 42i64)
false)
false))
(fn imported_num_strings_ok () -> bool
(if (= (i32_to_string 42) "42")
(if (= (u32_to_string 42u32) "42")
(if (= (i64_to_string 42i64) "42")
(if (= (u64_to_string 42u64) "42")
(= (f64_to_string 42.0) "42.0")
false)
false)
false)
false))
(fn imported_num_fallbacks_ok () -> bool
(if (= (i64_to_i32_or 42i64 7) 42)
(if (= (i64_to_i32_or 2147483648i64 7) 7)
(if (= (f64_to_i32_or 42.0 7) 42)
(if (= (f64_to_i32_or 2147483648.0 7) 7)
(if (= (f64_to_i64_or 42.0 7i64) 42i64)
(= (f64_to_i64_or 100000000000000000000.0 7i64) 7i64)
false)
false)
false)
false)
false))
(fn imported_num_helpers_ok () -> bool
(if (imported_num_widening_ok)
(if (imported_num_checked_ok)
(if (imported_num_strings_ok)
(imported_num_fallbacks_ok)
false)
false)
false))
(fn main () -> i32
(if (imported_num_helpers_ok)
42
1))
(test "explicit std num widening"
(imported_num_widening_ok))
(test "explicit std num checked conversions"
(imported_num_checked_ok))
(test "explicit std num to string"
(imported_num_strings_ok))
(test "explicit std num checked fallbacks"
(imported_num_fallbacks_ok))
(test "explicit std num helpers all"
(= (main) 42))