#![allow(unused_imports, dead_code)]
use rsleigh_api::{
AddressSpaceId, Architecture, DecodeError, Decoder, Instruction, PcodeOp, Varnode,
};
fn _arch_variants_present() {
let _ = Architecture::X86_64;
let _ = Architecture::X86_32;
let _ = Architecture::AArch64;
let _ = Architecture::ARM32;
let _ = Architecture::MIPS32;
let _ = Architecture::RiscV64;
}
fn _decoder_shape(bytes: &[u8], addr: u64) -> Result<Instruction, DecodeError> {
let mut dec = Decoder::new(Architecture::X86_64);
dec.decode(bytes, addr)
}
fn _pcode_re_exports() {
let _: Option<&PcodeOp> = None;
let _: Option<Varnode> = None;
let _: Option<AddressSpaceId> = None;
let _: Option<Instruction> = None;
let _: Result<(), DecodeError> = Ok(());
}
#[test]
fn stable_surface_smoke() {
let mut dec = Decoder::new(Architecture::X86_64);
let inst = dec
.decode(&[0x48, 0x89, 0xd8], 0x1000)
.expect("MOV RAX,RBX");
assert_eq!(inst.len, 3);
assert!(inst.disassembly.contains("MOV"));
assert_eq!(Architecture::X86_64.addr_size(), 8);
assert_eq!(Architecture::ARM32.addr_size(), 4);
assert!(Architecture::X86_64.register_name(0, 8).is_some());
assert_eq!(dec.architecture(), Architecture::X86_64);
assert!(
inst.constructor.is_none(),
"constructor span should default to None until codegen wiring lands"
);
}