From 38a2dfb2f3b490bf755103aa01b77459acf81aca Mon Sep 17 00:00:00 2001 From: Sam M W Date: Sun, 7 Aug 2022 15:56:38 +0100 Subject: [PATCH] add failing test --- src/cpu.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/cpu.rs b/src/cpu.rs index e78e698..15c5ced 100644 --- a/src/cpu.rs +++ b/src/cpu.rs @@ -802,6 +802,28 @@ mod tests { use super::*; use num::range_inclusive; + #[cfg_attr(feature = "decimal_mode", test)] + fn invalid_decimal_values_test() { + let mut cpu = CPU::new(); + cpu.registers.status.remove(Status::PS_CARRY); + + cpu.add_with_carry(0x0e); + assert_eq!(cpu.registers.accumulator, 0x0e); + cpu.registers.status.or(Status::PS_DECIMAL_MODE); + assert_eq!(cpu.registers.accumulator, 0x0e); + assert!(!cpu.registers.status.contains(Status::PS_CARRY)); + assert!(!cpu.registers.status.contains(Status::PS_ZERO)); + assert!(!cpu.registers.status.contains(Status::PS_NEGATIVE)); + assert!(!cpu.registers.status.contains(Status::PS_OVERFLOW)); + + cpu.add_with_carry(-92); // hex $a4 + assert_eq!(cpu.registers.accumulator, 0x18); + assert!(cpu.registers.status.contains(Status::PS_CARRY)); + assert!(!cpu.registers.status.contains(Status::PS_ZERO)); + assert!(cpu.registers.status.contains(Status::PS_NEGATIVE)); + assert!(!cpu.registers.status.contains(Status::PS_OVERFLOW)); + } + #[cfg_attr(feature = "decimal_mode", test)] fn decimal_add_test() { let mut cpu = CPU::new();