2025-05-31 22:56:05 -04:00

69 lines
1.6 KiB
Rust

use rand::random;
use gemma::chip8::registers::Chip8Registers;
#[test]
fn register_rw_test() {
let mut x = Chip8Registers::default();
x.poke(0x0, 0xff);
x.poke(0x1, 0xab);
assert_eq!(x.peek(0x0), 0xff);
assert_eq!(x.peek(0x1), 0xab);
}
#[test]
fn pc_test() {
let mut x = Chip8Registers::default();
x.set_pc(0x300);
assert_eq!(x.peek_pc(), 0x300);
}
#[test]
#[should_panic]
fn invalid_register() {
let mut x = Chip8Registers::default();
x.poke(0x10, 0xff);
}
#[test]
fn reset_clears_registers() {
let mut x = Chip8Registers::default();
for register in 0..0x10 {
x.poke(register, random::<u8>());
}
x.reset();
for register in 0..0x10 {
assert_eq!(x.peek(register), 0x00);
}
}
#[test]
fn registers_equality() {
let data_set: Vec<(Chip8Registers, Chip8Registers, bool)> = vec![
(Chip8Registers::default(), Chip8Registers::default(), true),
(
Chip8Registers {
registers: [
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
],
i_register: 0,
pc: 0,
},
Chip8Registers {
registers: [
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
],
i_register: 0,
pc: 0,
},
false,
),
];
for (first, second, matches) in data_set.iter() {
assert_eq!(first == second, *matches)
}
}