1 use lightbeam::{translate, ExecutableModule, ExecutionError};
2
translate_wat(wat: &str) -> ExecutableModule3 fn translate_wat(wat: &str) -> ExecutableModule {
4 let wasm = wat::parse_str(wat).unwrap();
5 let compiled = translate(&wasm).unwrap();
6 compiled
7 }
8
9 #[test]
wrong_type()10 fn wrong_type() {
11 let code = r#"
12 (module
13 (func (param i32) (param i64) (result i32)
14 (i32.const 228)
15 )
16 )
17 "#;
18
19 let translated = translate_wat(code);
20 assert_eq!(
21 translated
22 .execute_func::<_, ()>(0, (0u32, 0u32))
23 .unwrap_err(),
24 ExecutionError::TypeMismatch
25 );
26 }
27
28 #[test]
wrong_index()29 fn wrong_index() {
30 let code = r#"
31 (module
32 (func (param i32) (param i64) (result i32)
33 (i32.const 228)
34 )
35 )
36 "#;
37
38 let translated = translate_wat(code);
39 assert_eq!(
40 translated
41 .execute_func::<_, ()>(10, (0u32, 0u32))
42 .unwrap_err(),
43 ExecutionError::FuncIndexOutOfBounds
44 );
45 }
46