2018-02-01 16:46:33 +00:00
|
|
|
use wabt;
|
|
|
|
use {Module};
|
|
|
|
|
2018-01-17 15:32:33 +00:00
|
|
|
mod host;
|
|
|
|
mod wasm;
|
2018-01-23 13:57:09 +00:00
|
|
|
|
|
|
|
use super::Error;
|
|
|
|
|
|
|
|
fn assert_send<T: Send>() {}
|
|
|
|
fn assert_sync<T: Sync>() {}
|
|
|
|
fn assert_std_err_impl<T: ::std::error::Error>() {}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn assert_error_properties() {
|
|
|
|
assert_send::<Error>();
|
|
|
|
assert_sync::<Error>();
|
|
|
|
assert_std_err_impl::<Error>();
|
|
|
|
}
|
2018-02-01 16:46:33 +00:00
|
|
|
|
2018-06-21 12:47:49 +00:00
|
|
|
/// Test that converting an u32 (u64) that does not fit in an i32 (i64)
|
|
|
|
/// to a RuntimeValue and back works as expected and the number remains unchanged.
|
|
|
|
#[test]
|
|
|
|
fn unsigned_to_runtime_value() {
|
|
|
|
use super::RuntimeValue;
|
|
|
|
|
2018-10-29 10:16:55 +00:00
|
|
|
let overflow_i32: u32 = ::core::i32::MAX as u32 + 1;
|
2018-06-21 12:47:49 +00:00
|
|
|
assert_eq!(RuntimeValue::from(overflow_i32).try_into::<u32>().unwrap(), overflow_i32);
|
|
|
|
|
2018-10-29 10:16:55 +00:00
|
|
|
let overflow_i64: u64 = ::core::i64::MAX as u64 + 1;
|
2018-06-21 12:47:49 +00:00
|
|
|
assert_eq!(RuntimeValue::from(overflow_i64).try_into::<u64>().unwrap(), overflow_i64);
|
|
|
|
}
|
|
|
|
|
2018-02-01 16:46:33 +00:00
|
|
|
pub fn parse_wat(source: &str) -> Module {
|
|
|
|
let wasm_binary = wabt::wat2wasm(source).expect("Failed to parse wat source");
|
|
|
|
Module::from_buffer(wasm_binary).expect("Failed to load parsed module")
|
|
|
|
}
|