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