use sdl2::keyboard::{Keycode, Mod};
use crate::cpu::R;
use crate::keyboard::{Keyboard, StatusRegister};
use crate::machine::{Component, Machine};
#[test]
fn test_status_register() {
let sr = StatusRegister::default();
assert_eq!(0b001_0100, sr.as_u8()); }
#[test]
fn can_read_keys_from_io_ports() {
let mut keyboard = Keyboard::default();
assert_eq!(Some(0x14), keyboard.in_u8(0x64));
keyboard.add_keypress(Keycode::Escape, Mod::NOMOD);
assert_eq!(Some(0x15), keyboard.in_u8(0x64));
assert_eq!(Some(0x01), keyboard.in_u8(0x60));
}
#[test]
fn consumes_keypress_queue() {
let mut keyboard = Keyboard::default();
assert_eq!(false, keyboard.has_queued_presses());
keyboard.add_keypress(Keycode::Escape, Mod::NOMOD);
keyboard.add_keypress(Keycode::Escape, Mod::NOMOD);
assert_eq!(true, keyboard.has_queued_presses());
let (_, _, keypress) = keyboard.peek_dos_standard_scancode_and_ascii();
let keypress = keypress.unwrap();
keyboard.consume(&keypress);
assert_eq!(true, keyboard.has_queued_presses());
keyboard.consume(&keypress);
assert_eq!(false, keyboard.has_queued_presses());
}