ic-testkit 0.76.0

PocketIC-oriented test utilities for IC canister tests
Documentation
(module
  (import "ic0" "time" (func $time (result i64)))
  (import "ic0" "global_timer_set" (func $timer (param i64) (result i64)))
  (import "ic0" "msg_reply_data_append" (func $append (param i32 i32)))
  (import "ic0" "msg_reply" (func $reply))
  (import "ic0" "trap" (func $trap (param i32 i32)))
  (import "ic0" "stable64_grow" (func $grow (param i64) (result i64)))
  (import "ic0" "stable64_write" (func $write (param i64 i64 i64)))
  (import "ic0" "stable64_read" (func $read (param i64 i64 i64)))
  (memory (export "memory") 17)
  (global $value (export "value") (mut i64) (i64.const 7))
  (data (i32.const 128) "competing global timer owner")
  (func $arm (param $seconds i64) (result i64)
    (local $deadline i64)
    (local.set $deadline (i64.add (call $time) (i64.mul (local.get $seconds) (i64.const 1000000000))))
    (i64.store (i32.const 0) (local.get $deadline))
    (call $timer (local.get $deadline)))
  (func (export "canister_init")
    (drop (call $grow (i64.const 17)))
    (i64.store (i32.const 1048584) (i64.const 42))
    (call $write (i64.const 1048584) (i64.const 1048584) (i64.const 8))
    (drop (call $arm (i64.const 60))))
  (func (export "canister_update rearm") (local $previous i64)
    (local.set $previous (i64.load (i32.const 0)))
    (if (i64.ne (call $arm (i64.const 120)) (local.get $previous))
      (then (call $trap (i32.const 128) (i32.const 28))))
    (global.set $value (i64.const 99))
    (i64.store (i32.const 1048584) (i64.const 99))
    (call $write (i64.const 1048584) (i64.const 1048584) (i64.const 8))
    (drop (memory.grow (i32.const 2)))
    (call $reply))
  (func (export "canister_on_low_wasm_memory"))
  (func (export "canister_global_timer")
    (i64.store (i32.const 8) (i64.add (i64.load (i32.const 8)) (i64.const 1)))
    (drop (call $arm (i64.const 60))))
  (func (export "canister_query inspect")
    (i64.store (i32.const 16) (global.get $value))
    (i64.store (i32.const 24) (i64.load (i32.const 1048584)))
    (call $read (i64.const 32) (i64.const 1048584) (i64.const 8))
    (call $append (i32.const 0) (i32.const 40))
    (call $reply))
)