Skip to content

Commit

Permalink
test(interface-types) Test roundtrip: AST to binary to AST.
Browse files Browse the repository at this point in the history
  • Loading branch information
Hywan committed Feb 17, 2020
1 parent b33bec1 commit ba712e0
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions lib/interface-types/tests/binary.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
use wasmer_interface_types::{
ast::*, decoders::binary::parse, encoders::binary::ToBytes, interpreter::Instruction,
};

/// Tests an AST to binary, then binary to AST roundtrip.
#[test]
fn test_binary_encoding_decoding_roundtrip() {
let original_ast = Interfaces {
exports: vec![Export {
name: "ab",
input_types: vec![InterfaceType::I32],
output_types: vec![InterfaceType::I32],
}],
types: vec![Type::new(
"ab",
vec!["cd", "e"],
vec![InterfaceType::I32, InterfaceType::I32],
)],
imports: vec![Import {
namespace: "a",
name: "b",
input_types: vec![InterfaceType::I32],
output_types: vec![InterfaceType::I64],
}],
adapters: vec![Adapter::Import {
namespace: "a",
name: "b",
input_types: vec![InterfaceType::I32],
output_types: vec![InterfaceType::I32],
instructions: vec![Instruction::ArgumentGet { index: 1 }],
}],
forwards: vec![Forward { name: "a" }],
};

let mut binary = vec![];

original_ast
.to_bytes(&mut binary)
.expect("Failed to encode the AST.");

let (remainder, ast) = parse::<()>(binary.as_slice()).expect("Failed to decode the AST.");

assert!(remainder.is_empty());

assert_eq!(original_ast, ast);
}

0 comments on commit ba712e0

Please sign in to comment.