neo-decompiler 0.10.2

Neo N3 NEF decompiler: parse, disassemble, lift bytecode to high-level pseudocode and C# skeletons, with a CLI, JSON reports, and optional WebAssembly bindings.
Documentation
use super::*;
use crate::instruction::{Instruction, OpCode};

#[test]
fn methods_iterates_spans_in_order() {
    use crate::manifest::ContractManifest;
    let ins = vec![
        Instruction::new(0, OpCode::Push1, None),
        Instruction::new(1, OpCode::Ret, None),
        Instruction::new(10, OpCode::Push0, None),
        Instruction::new(11, OpCode::Ret, None),
    ];
    let manifest_json = r#"{"name":"C","abi":{"methods":[
            {"name":"main","parameters":[],"returntype":"Integer","offset":0},
            {"name":"helper","parameters":[],"returntype":"Integer","offset":10}
        ]}}"#;
    let manifest: ContractManifest = serde_json::from_str(manifest_json).unwrap();
    let table = MethodTable::new(&ins, Some(&manifest));
    let spans: Vec<_> = table.methods().collect();
    assert_eq!(spans.len(), 2, "expected two method spans, got {spans:?}");
    assert_eq!(spans[0].0, 0);
    assert_eq!(spans[0].2.name, "main");
    assert_eq!(spans[1].0, 10);
    assert_eq!(spans[1].2.name, "helper");
}