use dismael::disassemble;
#[test]
fn test_jump_target_labels() {
let machine_code = vec![
(0b00101 << 11) | 2, (0b00001 << 11) | 0, (0b00111 << 11) | 0, ];
let result = disassemble(&machine_code).unwrap();
let disasm_text = result.join("\n");
assert!(disasm_text.contains("L_0002:"));
assert!(disasm_text.contains("SOB L_0002"));
}
#[test]
fn test_conditional_jump_labels() {
let machine_code = vec![
(0b00110 << 11) | 3, (0b00001 << 11) | 0, (0b00001 << 11) | 1, (0b00111 << 11) | 0, ];
let result = disassemble(&machine_code).unwrap();
let disasm_text = result.join("\n");
assert!(disasm_text.contains("L_0003:"));
assert!(disasm_text.contains("SOM L_0003"));
}
#[test]
fn test_label_uniqueness() {
let machine_code = vec![
(0b00101 << 11) | 4, (0b00101 << 11) | 5, (0b00101 << 11) | 6, (0b00101 << 11) | 7, (0b00111 << 11) | 0, (0b00111 << 11) | 0, (0b00111 << 11) | 0, (0b00111 << 11) | 0, ];
let result = disassemble(&machine_code).unwrap();
let disasm_text = result.join("\n");
assert!(disasm_text.contains("L_0004:"));
assert!(disasm_text.contains("L_0005:"));
assert!(disasm_text.contains("L_0006:"));
assert!(disasm_text.contains("L_0007:"));
assert!(disasm_text.contains("SOB L_0004"));
assert!(disasm_text.contains("SOB L_0005"));
assert!(disasm_text.contains("SOB L_0006"));
assert!(disasm_text.contains("SOB L_0007"));
}
#[test]
fn test_soz_jump_labels() {
let machine_code = vec![
(0b10000 << 11) | 3, (0b00001 << 11) | 0, (0b00001 << 11) | 1, (0b00111 << 11) | 0, ];
let result = disassemble(&machine_code).unwrap();
let disasm_text = result.join("\n");
assert!(disasm_text.contains("L_0003:"));
assert!(disasm_text.contains("SOZ L_0003"));
}