Files
OxideJS-New/crates/oxide_vm/tests/dispatch_unimplemented_opcode_tests.rs
T

26 lines
852 B
Rust

//! 未实装 profile 族 opcodes 的显式失败钉:run 遇 PROFILE_SHAPE 须返回
//! 显式错误而非静默按数据指令消费(手工 CompiledModule 直达,不经编译器)。
use std::sync::Arc;
use oxide_bytecode::module::CompiledModule;
use oxide_bytecode::opcode;
use oxide_vm::vm::Vm;
#[test]
fn unimplemented_profile_opcode_fails_explicitly() {
let module = CompiledModule {
bytecode: Arc::from(vec![
opcode::encode(opcode::OpCode::PROFILE_SHAPE, 0, 0, 0),
opcode::encode(opcode::OpCode::HALT, 0, 0, 0),
]),
n_registers: 1,
..CompiledModule::new()
};
let mut vm = Vm::new();
let err = vm
.run(&Arc::new(module))
.expect_err("unimplemented opcode should fail explicitly");
assert_eq!(err, "opcode PROFILE_SHAPE not yet implemented");
}