()
| 160 | #[test] |
| 161 | #[cfg_attr(miri, ignore)] |
| 162 | fn 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)] |
nothing calls this directly
no test coverage detected