71 lines
1.9 KiB
Plaintext
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))
|