peek/poke tests

This commit is contained in:
Trevor Merritt 2024-10-04 14:55:06 -04:00
parent ef1b6e70f7
commit f1c8c9a683

View File

@ -28,6 +28,7 @@ impl Chip8Video {
}
pub fn poke(&mut self, address: u16, new_value: bool) -> Self {
println!("POKING {new_value} AT {address}");
self.memory[address as usize] = new_value;
self.to_owned()
}
@ -64,10 +65,6 @@ impl Chip8Video {
output
}
pub fn dump_to_console(self) {
println!("{}", self.format_as_string());
}
pub fn write_sprite(&mut self, sprite_data: Vec<u8>, origin: (u8, u8)) {
debug!("Writing [{:?}] at [{}]x[{}]", sprite_data, origin.0, origin.1);
}
@ -206,14 +203,68 @@ mod test {
0b01010101
];
for to_poke_index in to_poke.iter() {
for current_to_poke_bit_index in 0..8 {
let right_shifted_bit = to_poke[*to_poke_index as usize] >> current_to_poke_bit_index;
let offset = to_poke_index * 8 + current_to_poke_bit_index;
v.poke(offset, is_bit_set(to_poke[*to_poke_index as usize] as u8, current_to_poke_bit_index as u8));
}
for (byte_in_set, byte_to_poke) in to_poke.iter().enumerate() {
let base_offset = byte_in_set * 64;
v.poke_byte(base_offset as u16, *byte_to_poke);
}
assert!(false);
// row 2 column 1
{
assert!(v.peek(0x40));
assert!(v.peek(0x41));
assert!(v.peek(0x42));
assert!(v.peek(0x43));
assert!(v.peek(0x44));
assert!(v.peek(0x45));
assert!(v.peek(0x46));
assert!(v.peek(0x47));
// row 3 column 1
assert!(!v.peek(0xC0));
assert!(v.peek(0xC1));
assert!(!v.peek(0xC2));
assert!(v.peek(0xC3));
assert!(!v.peek(0xC4));
assert!(v.peek(0xC5));
assert!(!v.peek(0xC6));
assert!(v.peek(0xC7));
}
}
#[test]
fn moved_poke_test() {
let mut v = Chip8Video::default();
let to_poke = [
0b00000000,
0b11111111,
0b10101010,
0b01010101
];
let x_offset = 20;
let y_offset = 5;
for (byte_in_set, byte_to_poke) in to_poke.iter().enumerate() {
let base_offset = (x_offset + byte_in_set) * 64 + y_offset;
v.poke_byte(base_offset as u16, *byte_to_poke);
}
let test_offset = (x_offset * 64 + y_offset) as u16;
assert!(v.peek(test_offset));
assert!(v.peek(test_offset + 1));
assert!(v.peek(test_offset + 2));
assert!(v.peek(test_offset + 3));
assert!(v.peek(test_offset + 4));
assert!(v.peek(test_offset + 5));
assert!(v.peek(test_offset + 6));
assert!(v.peek(test_offset + 7));
}
#[test]
fn write_sprite_test() {
}
}