peek/poke tests
This commit is contained in:
parent
ef1b6e70f7
commit
f1c8c9a683
@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user