use vm6502::prelude::*; #[test] fn test_status_macros() { use vm6502::status; use Status::*; assert_eq!(status!(Negative), 0b10000000); assert_eq!(status!(Overflow), 0b01000000); assert_eq!(status!(Unused), 0); assert_eq!(status!(Break), 0b00010000); assert_eq!(status!(Decimal), 0b00001000); assert_eq!(status!(Interrupt), 0b00000100); assert_eq!(status!(Zero), 0b00000010); assert_eq!(status!(Carry), 0b00000001); } #[test] fn test_make_status() { use vm6502::*; use Status::*; let mut status = make_status!(Negative, Overflow, Break, Decimal, Interrupt, Zero, Carry); assert_eq!(status, 0b11011111); status = make_status!(Negative, Overflow, Break, Decimal, Interrupt, Zero); assert_eq!(status, 0b11011110); status = make_status!(Negative, Overflow, Break, Decimal, Interrupt); assert_eq!(status, 0b11011100); status = make_status!(Negative, Overflow, Break, Decimal); assert_eq!(status, 0b11011000); status = make_status!(Negative, Overflow, Break); assert_eq!(status, 0b11010000); status = make_status!(Negative, Overflow); assert_eq!(status, 0b11000000); status = make_status!(Negative); assert_eq!(status, 0b10000000); status = make_status!(); assert_eq!(status, 0b00000000); } #[ignore] #[test] fn test_stuff_program_at_end() { use vm6502::stuff_program_at_end; let mut vm = VirtualMachine::new(); let prog = "6901"; stuff_program_at_end!(vm, prog); assert_eq!(vm.flatmap[vm.heap_bounds.1 - (prog.len() / 2) - 1], 0x69); assert_eq!(vm.flatmap[vm.heap_bounds.1 - (prog.len() / 2)], 0x01); }