1 #![cfg(arc_try_new)]
2 
3 use wasmtime::{Config, Engine, Global, GlobalType, Mutability, Result, Store, Val, ValType};
4 use wasmtime_fuzzing::oom::OomTest;
5 
6 #[test]
global_new() -> Result<()>7 fn global_new() -> Result<()> {
8     let mut config = Config::new();
9     config.enable_compiler(false);
10     config.concurrency_support(false);
11     let engine = Engine::new(&config)?;
12 
13     OomTest::new().test(|| {
14         let mut store = Store::try_new(&engine, ())?;
15         let ty = GlobalType::new(ValType::I32, Mutability::Var);
16         let _global = wasmtime::Global::new(&mut store, ty, Val::I32(42))?;
17         Ok(())
18     })
19 }
20 
21 #[test]
global_get() -> Result<()>22 fn global_get() -> Result<()> {
23     let mut config = Config::new();
24     config.enable_compiler(false);
25     config.concurrency_support(false);
26     let engine = Engine::new(&config)?;
27 
28     OomTest::new().test(|| {
29         let mut store = Store::try_new(&engine, ())?;
30         let ty = GlobalType::new(ValType::I32, Mutability::Var);
31         let global = Global::new(&mut store, ty, Val::I32(42))?;
32         let val = global.get(&mut store);
33         assert_eq!(val.unwrap_i32(), 42);
34         Ok(())
35     })
36 }
37 
38 #[test]
global_set() -> Result<()>39 fn global_set() -> Result<()> {
40     let mut config = Config::new();
41     config.enable_compiler(false);
42     config.concurrency_support(false);
43     let engine = Engine::new(&config)?;
44 
45     OomTest::new().test(|| {
46         let mut store = Store::try_new(&engine, ())?;
47         let ty = GlobalType::new(ValType::I32, Mutability::Var);
48         let global = Global::new(&mut store, ty, Val::I32(42))?;
49         global.set(&mut store, Val::I32(99))?;
50         let val = global.get(&mut store);
51         assert_eq!(val.unwrap_i32(), 99);
52         Ok(())
53     })
54 }
55 
56 #[test]
global_ty() -> Result<()>57 fn global_ty() -> Result<()> {
58     let mut config = Config::new();
59     config.enable_compiler(false);
60     config.concurrency_support(false);
61     let engine = Engine::new(&config)?;
62 
63     OomTest::new().test(|| {
64         let mut store = Store::try_new(&engine, ())?;
65         let ty = GlobalType::new(ValType::I32, Mutability::Var);
66         let global = Global::new(&mut store, ty, Val::I32(42))?;
67         let ty = global.ty(&store);
68         assert!(ty.content().is_i32());
69         Ok(())
70     })
71 }
72