include!(env!("BINDINGS"));
use crate::exports::*;
struct Component;
export!(Component);
impl Guest for Component {
fn run() {
test_imports().unwrap();
let x = X::new(5);
assert_eq!(x.get_a(), 5);
x.set_a(10);
assert_eq!(x.get_a(), 10);
let z1 = Z::new(10);
assert_eq!(z1.get_a(), 10);
let z2 = Z::new(20);
assert_eq!(z2.get_a(), 20);
let xadd = X::add(x, 5);
assert_eq!(xadd.get_a(), 15);
let zadd = add(&z1, &z2);
assert_eq!(zadd.get_a(), 30);
let dropped_zs_start = Z::num_dropped();
drop(z1);
drop(z2);
consume(xadd);
let dropped_zs_end = Z::num_dropped();
if dropped_zs_start != 0 {
assert_eq!(dropped_zs_end, dropped_zs_start + 2);
}
}
}