MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / test_multi_memory

Function test_multi_memory

tests/all/threads.rs:162–194  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

160#[test]
161#[cfg_attr(miri, ignore)]
162fn test_multi_memory() -> Result<()> {
163 let wat = r#"(module
164 (import "env" "imported" (memory $imported 5 10 shared))
165 (memory (export "owned") 10 20)
166 (memory (export "shared") 1 2 shared)
167 (export "imported" (memory $imported))
168 )"#;
169 let Some(engine) = engine() else {
170 return Ok(());
171 };
172 let module = Module::new(&engine, wat)?;
173 let mut store = Store::new(&engine, ());
174 let incoming_shared_memory = SharedMemory::new(&engine, MemoryType::shared(5, 10))?;
175 let instance = Instance::new(&mut store, &module, &[incoming_shared_memory.into()])?;
176 let owned_memory = instance.get_memory(&mut store, "owned").unwrap();
177 let shared_memory = instance.get_shared_memory(&mut store, "shared").unwrap();
178 let imported_memory = instance.get_shared_memory(&mut store, "imported").unwrap();
179
180 assert_eq!(owned_memory.size(&store), 10);
181 assert_eq!(owned_memory.ty(&store).minimum(), 10);
182 assert_eq!(owned_memory.ty(&store).maximum(), Some(20));
183 assert_eq!(owned_memory.ty(&store).is_shared(), false);
184 assert_eq!(shared_memory.size(), 1);
185 assert_eq!(shared_memory.ty().minimum(), 1);
186 assert_eq!(shared_memory.ty().maximum(), Some(2));
187 assert_eq!(shared_memory.ty().is_shared(), true);
188 assert_eq!(imported_memory.size(), 5);
189 assert_eq!(imported_memory.ty().minimum(), 5);
190 assert_eq!(imported_memory.ty().maximum(), Some(10));
191 assert_eq!(imported_memory.ty().is_shared(), true);
192
193 Ok(())
194}
195
196#[test]
197#[cfg_attr(miri, ignore)]

Callers

nothing calls this directly

Calls 6

OkFunction · 0.85
get_shared_memoryMethod · 0.80
engineFunction · 0.70
newFunction · 0.50
unwrapMethod · 0.45
get_memoryMethod · 0.45

Tested by

no test coverage detected