#[macro_export]
macro_rules! build_op_test {
($op_str:expr) => {{
let source = format!("
proc.truncate_stack.4
loc_storew.0 dropw movupw.3
sdepth neq.16
while.true
dropw movupw.3
sdepth neq.16
end
loc_loadw.0
end
begin {} exec.truncate_stack end",
$op_str
);
$crate::build_test!(&source)
}};
($op_str:expr, $($tail:tt)+) => {{
let source = format!("
proc.truncate_stack.4
loc_storew.0 dropw movupw.3
sdepth neq.16
while.true
dropw movupw.3
sdepth neq.16
end
loc_loadw.0
end
begin {} exec.truncate_stack end",
$op_str
);
$crate::build_test!(&source, $($tail)+)
}};
}
#[macro_export]
macro_rules! build_test {
($($params:tt)+) => {{
$crate::build_test_by_mode!(false, $($params)+)
}}
}
#[macro_export]
macro_rules! build_debug_test {
($($params:tt)+) => {{
$crate::build_test_by_mode!(true, $($params)+)
}}
}
#[macro_export]
macro_rules! build_test_by_mode {
($in_debug_mode:expr, $source:expr) => {{
let name = format!("test{}", line!());
$crate::Test::new(&name, $source, $in_debug_mode)
}};
($in_debug_mode:expr, $source:expr, $stack_inputs:expr) => {{
use ::assembly::SourceManager;
let stack_inputs: Vec<u64> = $stack_inputs.to_vec();
let stack_inputs = $crate::StackInputs::try_from_ints(stack_inputs).unwrap();
let advice_inputs = $crate::AdviceInputs::default();
let name = format!("test{}", line!());
let source_manager = ::alloc::sync::Arc::new(::assembly::DefaultSourceManager::default());
let source = source_manager.load(&name, ::alloc::string::String::from($source));
$crate::Test {
source_manager,
source,
kernel_source: None,
stack_inputs,
advice_inputs,
in_debug_mode: $in_debug_mode,
libraries: Vec::default(),
add_modules: Vec::default(),
}
}};
($in_debug_mode:expr, $source:expr, $stack_inputs:expr, $advice_stack:expr) => {{
use ::assembly::SourceManager;
let stack_inputs: Vec<u64> = $stack_inputs.to_vec();
let stack_inputs = $crate::StackInputs::try_from_ints(stack_inputs).unwrap();
let stack_values: Vec<u64> = $advice_stack.to_vec();
let store = $crate::crypto::MerkleStore::new();
let advice_inputs = $crate::AdviceInputs::default()
.with_stack_values(stack_values)
.unwrap()
.with_merkle_store(store);
let name = format!("test{}", line!());
let source_manager = ::alloc::sync::Arc::new(::assembly::DefaultSourceManager::default());
let source = source_manager.load(&name, ::alloc::string::String::from($source));
$crate::Test {
source_manager,
source,
kernel_source: None,
stack_inputs,
advice_inputs,
in_debug_mode: $in_debug_mode,
libraries: Vec::default(),
add_modules: Vec::default(),
}
}};
(
$in_debug_mode:expr,
$source:expr,
$stack_inputs:expr,
$advice_stack:expr,
$advice_merkle_store:expr
) => {{
use ::assembly::SourceManager;
let stack_inputs: Vec<u64> = $stack_inputs.to_vec();
let stack_inputs = $crate::StackInputs::try_from_ints(stack_inputs).unwrap();
let stack_values: Vec<u64> = $advice_stack.to_vec();
let advice_inputs = $crate::AdviceInputs::default()
.with_stack_values(stack_values)
.unwrap()
.with_merkle_store($advice_merkle_store);
let name = format!("test{}", line!());
let source_manager = ::alloc::sync::Arc::new(::assembly::DefaultSourceManager::default());
let source = source_manager.load(&name, ::alloc::string::String::from($source));
$crate::Test {
source_manager,
source,
kernel_source: None,
stack_inputs,
advice_inputs,
in_debug_mode: $in_debug_mode,
libraries: Vec::default(),
add_modules: Vec::default(),
}
}};
(
$in_debug_mode:expr,
$source:expr,
$stack_inputs:expr,
$advice_stack:expr,
$advice_merkle_store:expr,
$advice_map:expr
) => {{
use ::assembly::SourceManager;
let stack_inputs: Vec<u64> = $stack_inputs.to_vec();
let stack_inputs = $crate::StackInputs::try_from_ints(stack_inputs).unwrap();
let stack_values: Vec<u64> = $advice_stack.to_vec();
let advice_inputs = $crate::AdviceInputs::default()
.with_stack_values(stack_values)
.unwrap()
.with_merkle_store($advice_merkle_store)
.with_map($advice_map);
let name = format!("test{}", line!());
let source_manager = ::alloc::sync::Arc::new(::assembly::DefaultSourceManager::default());
let source = source_manager.load(&name, ::alloc::string::String::from($source));
$crate::Test {
source_manager,
source,
kernel_source: None,
stack_inputs,
advice_inputs,
in_debug_mode: $in_debug_mode,
libraries: Vec::default(),
add_modules: Vec::default(),
}
}};
}