program main
  fn i32_zero_text() -> string
    call std.num.i32_to_string : string
      int 0 : i32
  fn i32_negative_text() -> string
    call std.num.i32_to_string : string
      int -7 : i32
  fn i32_high_text() -> string
    call std.num.i32_to_string : string
      int 2147483647 : i32
  fn i64_low_text() -> string
    call std.num.i64_to_string : string
      i64 -9223372036854775808 : i64
  fn i64_high_text() -> string
    call std.num.i64_to_string : string
      i64 9223372036854775807 : i64
  fn i64_beyond_i32_text() -> string
    call std.num.i64_to_string : string
      i64 2147483648 : i64
  fn main() -> i32
    call std.io.print_string : unit
      call i32_zero_text : string
    call std.io.print_string : unit
      call i32_negative_text : string
    call std.io.print_string : unit
      call i32_high_text : string
    call std.io.print_string : unit
      call i64_low_text : string
    call std.io.print_string : unit
      call i64_high_text : string
    call std.io.print_string : unit
      call i64_beyond_i32_text : string
    if : i32
      binary = : bool
        call std.string.len : i32
          call i64_high_text : string
        int 19 : i32
      int 0 : i32
      int 1 : i32
  test "i32 zero to string"
    binary = : bool
      call i32_zero_text : string
      string "0" : string
  test "i32 negative to string"
    binary = : bool
      call i32_negative_text : string
      string "-7" : string
  test "i32 high to string"
    binary = : bool
      call i32_high_text : string
      string "2147483647" : string
  test "i32 negative string length"
    binary = : bool
      call std.string.len : i32
        call i32_negative_text : string
      int 2 : i32
  test "i64 low to string"
    binary = : bool
      call i64_low_text : string
      string "-9223372036854775808" : string
  test "i64 high to string"
    binary = : bool
      call i64_high_text : string
      string "9223372036854775807" : string
  test "i64 beyond i32 to string"
    binary = : bool
      call i64_beyond_i32_text : string
      string "2147483648" : string
  test "i64 low string length"
    binary = : bool
      call std.string.len : i32
        call i64_low_text : string
      int 20 : i32
