mirror of
https://github.com/fluencelabs/parity-wasm
synced 2025-05-29 15:41:36 +00:00
integration tests
This commit is contained in:
parent
38da8860ed
commit
6dc392bf18
@ -61,7 +61,7 @@ impl FuncBody {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn locals(&self) -> &[Local] { &self.locals }
|
pub fn locals(&self) -> &[Local] { &self.locals }
|
||||||
|
|
||||||
pub fn code(&self) -> &Opcodes { &self.opcodes }
|
pub fn code(&self) -> &Opcodes { &self.opcodes }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ impl Serialize for FuncBody {
|
|||||||
data.into_iter().map(Into::into),
|
data.into_iter().map(Into::into),
|
||||||
);
|
);
|
||||||
counted_list.serialize(&mut counted_writer)?;
|
counted_list.serialize(&mut counted_writer)?;
|
||||||
|
|
||||||
let code = self.opcodes;
|
let code = self.opcodes;
|
||||||
code.serialize(&mut counted_writer)?;
|
code.serialize(&mut counted_writer)?;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use std::io;
|
use std::io;
|
||||||
use super::{Deserialize, Serialize, Error, Uint32};
|
use super::{Deserialize, Serialize, Error, Uint32};
|
||||||
use super::section::Section;
|
use super::section::{Section, CodeSection};
|
||||||
|
|
||||||
pub struct Module {
|
pub struct Module {
|
||||||
magic: u32,
|
magic: u32,
|
||||||
@ -18,6 +18,13 @@ impl Module {
|
|||||||
pub fn sections_mut(&mut self) -> &mut Vec<Section> {
|
pub fn sections_mut(&mut self) -> &mut Vec<Section> {
|
||||||
&mut self.sections
|
&mut self.sections
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn code_section(&self) -> Option<&CodeSection> {
|
||||||
|
for section in self.sections() {
|
||||||
|
if let &Section::Code(ref code_section) = section { return Some(code_section); }
|
||||||
|
}
|
||||||
|
None
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Deserialize for Module {
|
impl Deserialize for Module {
|
||||||
@ -60,7 +67,7 @@ impl Serialize for Module {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod integration_tests {
|
mod integration_tests {
|
||||||
|
|
||||||
use super::super::{deserialize_file, serialize, deserialize_buffer};
|
use super::super::{deserialize_file, serialize, deserialize_buffer, Section};
|
||||||
use super::Module;
|
use super::Module;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -73,12 +80,31 @@ mod integration_tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn serde() {
|
fn serde() {
|
||||||
let module = deserialize_file("./res/cases/v1/hello.wasm").expect("Should be deserialized");
|
let module = deserialize_file("./res/cases/v1/test5.wasm").expect("Should be deserialized");
|
||||||
let buf = serialize(module).expect("serialization to succeed");
|
let buf = serialize(module).expect("serialization to succeed");
|
||||||
|
|
||||||
let module_new: Module = deserialize_buffer(buf).expect("deserialization to succeed");
|
let module_new: Module = deserialize_buffer(buf).expect("deserialization to succeed");
|
||||||
let module_old = deserialize_file("./res/cases/v1/hello.wasm").expect("Should be deserialized");
|
let module_old = deserialize_file("./res/cases/v1/test5.wasm").expect("Should be deserialized");
|
||||||
|
|
||||||
assert_eq!(module_old.sections().len(), module_new.sections().len());
|
assert_eq!(module_old.sections().len(), module_new.sections().len());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn serde_code() {
|
||||||
|
let mut module = deserialize_file("./res/cases/v1/test5.wasm").expect("Should be deserialized");
|
||||||
|
module.sections_mut().retain(|x| {
|
||||||
|
if let &Section::Code(_) = x { true } else { false }
|
||||||
|
});
|
||||||
|
|
||||||
|
let buf = serialize(module).expect("serialization to succeed");
|
||||||
|
|
||||||
|
let module_new: Module = deserialize_buffer(buf).expect("deserialization to succeed");
|
||||||
|
let module_old = deserialize_file("./res/cases/v1/test5.wasm").expect("Should be deserialized");
|
||||||
|
assert_eq!(
|
||||||
|
module_old.code_section().expect("code section exists").bodies().len(),
|
||||||
|
module_new.code_section().expect("code section exists").bodies().len(),
|
||||||
|
"There should be equal amount of function bodies before and after serialization"
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
@ -5,6 +5,7 @@ use super::{
|
|||||||
Uint32, VarUint64, Uint64, CountedListWriter
|
Uint32, VarUint64, Uint64, CountedListWriter
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
pub struct Opcodes(Vec<Opcode>);
|
pub struct Opcodes(Vec<Opcode>);
|
||||||
|
|
||||||
impl Opcodes {
|
impl Opcodes {
|
||||||
@ -70,6 +71,7 @@ impl Deserialize for InitExpr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
pub enum Opcode {
|
pub enum Opcode {
|
||||||
Unreachable,
|
Unreachable,
|
||||||
Nop,
|
Nop,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user