1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5mod bindings;
6pub use bindings::*;
7pub mod passes;
8
9#[cfg(test)]
10mod tests {
11 use super::*;
12 use std::ffi::CString;
13 use std::ptr;
14
15 #[test]
16 fn test_fuzz() {
17 let vec: Vec<u8> = vec![0, 1, 2, 3, 4, 5];
18 unsafe {
19 let module = translateToFuzz(vec.as_ptr() as *const i8, vec.len(), true);
20 let result = BinaryenModuleValidate(module);
21 assert!(result != 0);
22 }
23 }
24
25 #[test]
26 fn test_sanity() {
27 unsafe {
29 let module = BinaryenModuleCreate();
30 let mut params = [BinaryenTypeInt32(), BinaryenTypeInt32()];
31
32 let params = BinaryenTypeCreate(params.as_mut_ptr(), 2);
33 let results = BinaryenTypeInt32();
34
35 let x = BinaryenLocalGet(module, 0, BinaryenTypeInt32());
36 let y = BinaryenLocalGet(module, 1, BinaryenTypeInt32());
37 let add = BinaryenBinary(module, BinaryenAddInt32(), x, y);
38
39 let func_name = CString::new("adder").unwrap();
40 let _ = BinaryenAddFunction(
41 module,
42 func_name.as_ptr(),
43 params,
44 results,
45 ptr::null_mut(),
46 0,
47 add,
48 );
49
50 BinaryenModulePrint(module);
51 BinaryenModuleDispose(module);
52 }
53 }
54}