1 #![cfg(arc_try_new)]
2 
3 use wasmtime::{Config, Engine, FuncType, Result, Store, Tag, TagType};
4 use wasmtime_fuzzing::oom::OomTest;
5 
6 #[test]
tag_new() -> Result<()>7 fn tag_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().allow_alloc_after_oom(true).test(|| {
14         let mut store = Store::try_new(&engine, ())?;
15         let func_ty = FuncType::try_new(&engine, [], [])?;
16         let tag_ty = TagType::new(func_ty);
17         let _tag = Tag::new(&mut store, &tag_ty)?;
18         Ok(())
19     })
20 }
21 
22 #[test]
tag_ty() -> Result<()>23 fn tag_ty() -> Result<()> {
24     let mut config = Config::new();
25     config.enable_compiler(false);
26     config.concurrency_support(false);
27     let engine = Engine::new(&config)?;
28 
29     OomTest::new().allow_alloc_after_oom(true).test(|| {
30         let mut store = Store::try_new(&engine, ())?;
31         let func_ty = FuncType::try_new(&engine, [], [])?;
32         let tag_ty = TagType::new(func_ty);
33         let tag = Tag::new(&mut store, &tag_ty)?;
34         let _ty = tag.ty(&store);
35         Ok(())
36     })
37 }
38 
39 #[test]
tag_eq() -> Result<()>40 fn tag_eq() -> Result<()> {
41     let mut config = Config::new();
42     config.enable_compiler(false);
43     config.concurrency_support(false);
44     let engine = Engine::new(&config)?;
45 
46     OomTest::new().allow_alloc_after_oom(true).test(|| {
47         let mut store = Store::try_new(&engine, ())?;
48         let func_ty = FuncType::try_new(&engine, [], [])?;
49         let tag_ty = TagType::new(func_ty);
50         let tag1 = Tag::new(&mut store, &tag_ty)?;
51         let tag2 = Tag::new(&mut store, &tag_ty)?;
52         assert!(Tag::eq(&tag1, &tag1, &store));
53         assert!(!Tag::eq(&tag1, &tag2, &store));
54         Ok(())
55     })
56 }
57