xref: /wasmtime-44.0.1/tests/all/eqref.rs (revision 7f7b39cb)
1 use wasmtime::*;
2 
3 #[test]
eqref_from_i31() -> Result<()>4 fn eqref_from_i31() -> Result<()> {
5     let mut config = Config::new();
6     config.wasm_function_references(true);
7     config.wasm_gc(true);
8 
9     let engine = Engine::new(&config)?;
10     let mut store = Store::new(&engine, ());
11 
12     let i31 = I31::wrapping_u32(31);
13 
14     // without EqRef::from_i31
15     let any_ref = AnyRef::from_i31(&mut store, i31);
16     let eq_ref1 = any_ref.unwrap_eqref(&mut store)?;
17 
18     // with EqRef::from_i31
19     let eq_ref2 = EqRef::from_i31(&mut store, i31);
20 
21     // reference to same i31
22     assert_eq!(Rooted::ref_eq(&store, &eq_ref1, &eq_ref2)?, true);
23 
24     Ok(())
25 }
26