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