use core::computers::rom_only::RomOnlyComputer;
use core::traits::backplane::Backplane;

#[test]
fn rom_only_widetick_test() {
    let bytes = include_bytes!("/home/tmerritt/Projects/mos6502/resources/test/periph/at28c256/checksum.bin");

    let mut rom_only = RomOnlyComputer::program((&bytes[..]).to_vec());

    rom_only.tick2(0x05, 0x00, 0x00);
    assert_eq!(rom_only.data_bus(), 0x05);
    assert_eq!(rom_only.address_bus(), 0x05);

    rom_only.tick2(0x07, 0x00, 0x00);
    assert_eq!(rom_only.data_bus(), 0x07);
    assert_eq!(rom_only.address_bus(), 0x07);

    rom_only.tick2(0x09, 0x00, 0x00);
    assert_eq!(rom_only.data_bus(), 0x09);
    assert_eq!(rom_only.address_bus(), 0x09);
}

#[test]
fn rom_only_thintick_test() {
    let bytes = include_bytes!("/home/tmerritt/Projects/mos6502/resources/test/periph/at28c256/checksum.bin");

    let mut rom_only = RomOnlyComputer::program((&bytes[..]).to_vec());

    rom_only.set_read_mode(true);
    rom_only.set_address_bus(0x05);
    rom_only.tick();

    assert_eq!(rom_only.data_bus(), 0x05);
    assert_eq!(rom_only.address_bus(), 0x05);

    rom_only.set_read_mode(true);
    rom_only.set_address_bus(0x07);
    rom_only.tick();

    assert_eq!(rom_only.data_bus(), 0x07);
    assert_eq!(rom_only.address_bus(), 0x07);
}
