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