69 lines
1.6 KiB
Rust
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)
|
|
}
|
|
}
|