Add exclusive_or_test().

This commit is contained in:
Andrew Keeton 2014-11-16 21:11:22 -05:00
parent 0563911fe3
commit fab7ff5cf0
1 changed files with 30 additions and 0 deletions

View File

@ -1194,4 +1194,34 @@ fn compare_with_y_register_test() {
},
instruction::LDY
);
}
#[test]
fn exclusive_or_test() {
let mut machine = Machine::new();
for a_before in range(0u8, 255u8) {
for val in range(0u8, 255u8) {
machine.execute_instruction(
(instruction::LDA, instruction::UseImmediate(a_before))
);
machine.exclusive_or(val);
let a_after = a_before ^ val;
assert_eq!(machine.registers.accumulator, a_after as i8);
if a_after == 0 {
assert!(machine.registers.status.contains(PS_ZERO));
} else {
assert!(!machine.registers.status.contains(PS_ZERO));
}
if (a_after as i8) < 0 {
assert!(machine.registers.status.contains(PS_NEGATIVE));
} else {
assert!(!machine.registers.status.contains(PS_NEGATIVE));
}
}
}
}