1 #![cfg(arc_try_new)]
2
3 use wasmtime::{Config, Engine, Result, Store, StoreLimitsBuilder};
4 use wasmtime_fuzzing::oom::OomTest;
5
6 #[test]
store_try_new() -> Result<()>7 fn store_try_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 OomTest::new().test(|| {
13 let _ = Store::try_new(&engine, ())?;
14 Ok(())
15 })
16 }
17
18 #[test]
store_data() -> Result<()>19 fn store_data() -> Result<()> {
20 let mut config = Config::new();
21 config.enable_compiler(false);
22 config.concurrency_support(false);
23 let engine = Engine::new(&config)?;
24 OomTest::new().test(|| {
25 let store = Store::try_new(&engine, 42u32)?;
26 assert_eq!(*store.data(), 42);
27 Ok(())
28 })
29 }
30
31 #[test]
store_data_mut() -> Result<()>32 fn store_data_mut() -> Result<()> {
33 let mut config = Config::new();
34 config.enable_compiler(false);
35 config.concurrency_support(false);
36 let engine = Engine::new(&config)?;
37 OomTest::new().test(|| {
38 let mut store = Store::try_new(&engine, 42u32)?;
39 *store.data_mut() = 99;
40 assert_eq!(*store.data(), 99);
41 Ok(())
42 })
43 }
44
45 #[test]
store_engine() -> Result<()>46 fn store_engine() -> Result<()> {
47 let mut config = Config::new();
48 config.enable_compiler(false);
49 config.concurrency_support(false);
50 let engine = Engine::new(&config)?;
51 OomTest::new().test(|| {
52 let store = Store::try_new(&engine, ())?;
53 let _engine = store.engine();
54 Ok(())
55 })
56 }
57
58 #[test]
store_limiter() -> Result<()>59 fn store_limiter() -> Result<()> {
60 let mut config = Config::new();
61 config.enable_compiler(false);
62 config.concurrency_support(false);
63 let engine = Engine::new(&config)?;
64 OomTest::new().test(|| {
65 let mut store = Store::try_new(&engine, StoreLimitsBuilder::new().build())?;
66 store.limiter(|limits| limits);
67 Ok(())
68 })
69 }
70
71 #[test]
store_fuel() -> Result<()>72 fn store_fuel() -> Result<()> {
73 let mut config = Config::new();
74 config.enable_compiler(false);
75 config.concurrency_support(false);
76 config.consume_fuel(true);
77 let engine = Engine::new(&config)?;
78 OomTest::new().test(|| {
79 let mut store = Store::try_new(&engine, ())?;
80 store.set_fuel(100)?;
81 let fuel = store.get_fuel()?;
82 assert_eq!(fuel, 100);
83 Ok(())
84 })
85 }
86
87 #[test]
store_epoch_deadline() -> Result<()>88 fn store_epoch_deadline() -> Result<()> {
89 let mut config = Config::new();
90 config.enable_compiler(false);
91 config.concurrency_support(false);
92 config.epoch_interruption(true);
93 let engine = Engine::new(&config)?;
94 OomTest::new().test(|| {
95 let mut store = Store::try_new(&engine, ())?;
96 store.set_epoch_deadline(10);
97 Ok(())
98 })
99 }
100