use super::*;
use crate::instruction::OpCode;
#[test]
fn high_level_lifts_simple_while_loop() {
let script = [
OpCode::Push1.byte(),
OpCode::Jmpifnot.byte(),
0x05,
OpCode::Nop.byte(),
OpCode::Jmp.byte(),
0xFC,
OpCode::Ret.byte(),
];
let nef_bytes = build_nef(&script);
let decompilation = Decompiler::new()
.decompile_bytes(&nef_bytes)
.expect("decompile succeeds");
let high_level = decompilation
.high_level
.as_deref()
.expect("high-level output");
assert!(
high_level.contains("while t0 {"),
"missing while block: {high_level}"
);
assert!(
!high_level.contains("jump ->"),
"loop back-edge should be lifted: {high_level}"
);
}