diff --git a/tests/rad_tests/latest.txt b/tests/rad_tests/latest.txt index 56b4166..3fd91ed 100644 --- a/tests/rad_tests/latest.txt +++ b/tests/rad_tests/latest.txt @@ -1,4 +1,4 @@ -Last run on 2024-03-31 at commit 6e7e315808228e03eaf8ad2e8152c087710f1d28 with flags --check-undocumented --check-timings +Last run on 2024-04-07 at commit 1c5ad3999afa5591ec8fcbcadf4797514c390031 with flags --check-undocumented --check-timings 00.json completed, all passed! 01.json completed, all passed! @@ -614,7 +614,7 @@ dd 82.json completed, all passed! dd 83.json completed, all passed! dd 84.json completed, all passed! dd 85.json completed, all passed! -dd 86.json completed, all passed! +dd 86.json completed: 0 passed, 1000 FAILED dd 87.json completed, all passed! dd 88.json completed, all passed! dd 89.json completed, all passed! @@ -622,7 +622,7 @@ dd 8a.json completed, all passed! dd 8b.json completed, all passed! dd 8c.json completed, all passed! dd 8d.json completed, all passed! -dd 8e.json completed, all passed! +dd 8e.json completed: 0 passed, 1000 FAILED dd 8f.json completed, all passed! dd 90.json completed, all passed! dd 91.json completed, all passed! @@ -630,7 +630,7 @@ dd 92.json completed, all passed! dd 93.json completed, all passed! dd 94.json completed, all passed! dd 95.json completed, all passed! -dd 96.json completed, all passed! +dd 96.json completed: 0 passed, 1000 FAILED dd 97.json completed, all passed! dd 98.json completed, all passed! dd 99.json completed, all passed! @@ -638,7 +638,7 @@ dd 9a.json completed, all passed! dd 9b.json completed, all passed! dd 9c.json completed, all passed! dd 9d.json completed, all passed! -dd 9e.json completed, all passed! +dd 9e.json completed: 0 passed, 1000 FAILED dd 9f.json completed, all passed! dd a0.json completed, all passed! dd a1.json completed, all passed! @@ -646,7 +646,7 @@ dd a2.json completed, all passed! dd a3.json completed, all passed! dd a4.json completed, all passed! dd a5.json completed, all passed! -dd a6.json completed, all passed! +dd a6.json completed: 0 passed, 1000 FAILED dd a7.json completed, all passed! dd a8.json completed, all passed! dd a9.json completed, all passed! @@ -654,7 +654,7 @@ dd aa.json completed, all passed! dd ab.json completed, all passed! dd ac.json completed, all passed! dd ad.json completed, all passed! -dd ae.json completed, all passed! +dd ae.json completed: 0 passed, 1000 FAILED dd af.json completed, all passed! dd b0.json completed, all passed! dd b1.json completed, all passed! @@ -662,7 +662,7 @@ dd b2.json completed, all passed! dd b3.json completed, all passed! dd b4.json completed, all passed! dd b5.json completed, all passed! -dd b6.json completed, all passed! +dd b6.json completed: 0 passed, 1000 FAILED dd b7.json completed, all passed! dd b8.json completed, all passed! dd b9.json completed, all passed! @@ -670,7 +670,7 @@ dd ba.json completed, all passed! dd bb.json completed, all passed! dd bc.json completed, all passed! dd bd.json completed, all passed! -dd be.json completed, all passed! +dd be.json completed: 0 passed, 1000 FAILED dd bf.json completed, all passed! dd c0.json completed, all passed! dd c1.json completed, all passed! @@ -1038,7 +1038,7 @@ ed 5f.json completed, all passed! ed 60.json completed: 2 passed, 998 FAILED ed 61.json completed, all passed! ed 62.json completed, all passed! -ed 63.json completed, all passed! +ed 63.json completed: 0 passed, 1000 FAILED ed 64.json completed, all passed! ed 65.json completed, all passed! ed 66.json completed, all passed! @@ -1046,7 +1046,7 @@ ed 67.json completed, all passed! ed 68.json completed: 4 passed, 996 FAILED ed 69.json completed, all passed! ed 6a.json completed, all passed! -ed 6b.json completed, all passed! +ed 6b.json completed: 0 passed, 1000 FAILED ed 6c.json completed, all passed! ed 6d.json completed, all passed! ed 6e.json completed, all passed! @@ -1058,7 +1058,7 @@ ed 73.json completed, all passed! ed 74.json completed, all passed! ed 75.json completed, all passed! ed 76.json completed, all passed! -ed 77.json completed, all passed! +ed 77.json completed: 0 passed, 1000 FAILED ed 78.json completed: 7 passed, 993 FAILED ed 79.json completed, all passed! ed 7a.json completed, all passed! @@ -1066,7 +1066,7 @@ ed 7b.json completed, all passed! ed 7c.json completed, all passed! ed 7d.json completed, all passed! ed 7e.json completed, all passed! -ed 7f.json completed, all passed! +ed 7f.json completed: 0 passed, 1000 FAILED ed a0.json completed, all passed! ed a1.json completed: 0 passed, 1000 FAILED ed a2.json completed: 0 passed, 1000 FAILED @@ -1234,7 +1234,7 @@ fd 82.json completed, all passed! fd 83.json completed, all passed! fd 84.json completed, all passed! fd 85.json completed, all passed! -fd 86.json completed, all passed! +fd 86.json completed: 0 passed, 1000 FAILED fd 87.json completed, all passed! fd 88.json completed, all passed! fd 89.json completed, all passed! @@ -1242,7 +1242,7 @@ fd 8a.json completed, all passed! fd 8b.json completed, all passed! fd 8c.json completed, all passed! fd 8d.json completed, all passed! -fd 8e.json completed, all passed! +fd 8e.json completed: 0 passed, 1000 FAILED fd 8f.json completed, all passed! fd 90.json completed, all passed! fd 91.json completed, all passed! @@ -1250,7 +1250,7 @@ fd 92.json completed, all passed! fd 93.json completed, all passed! fd 94.json completed, all passed! fd 95.json completed, all passed! -fd 96.json completed, all passed! +fd 96.json completed: 0 passed, 1000 FAILED fd 97.json completed, all passed! fd 98.json completed, all passed! fd 99.json completed, all passed! @@ -1258,7 +1258,7 @@ fd 9a.json completed, all passed! fd 9b.json completed, all passed! fd 9c.json completed, all passed! fd 9d.json completed, all passed! -fd 9e.json completed, all passed! +fd 9e.json completed: 0 passed, 1000 FAILED fd 9f.json completed, all passed! fd a0.json completed, all passed! fd a1.json completed, all passed! @@ -1266,7 +1266,7 @@ fd a2.json completed, all passed! fd a3.json completed, all passed! fd a4.json completed, all passed! fd a5.json completed, all passed! -fd a6.json completed, all passed! +fd a6.json completed: 0 passed, 1000 FAILED fd a7.json completed, all passed! fd a8.json completed, all passed! fd a9.json completed, all passed! @@ -1274,7 +1274,7 @@ fd aa.json completed, all passed! fd ab.json completed, all passed! fd ac.json completed, all passed! fd ad.json completed, all passed! -fd ae.json completed, all passed! +fd ae.json completed: 0 passed, 1000 FAILED fd af.json completed, all passed! fd b0.json completed, all passed! fd b1.json completed, all passed! @@ -1282,7 +1282,7 @@ fd b2.json completed, all passed! fd b3.json completed, all passed! fd b4.json completed, all passed! fd b5.json completed, all passed! -fd b6.json completed, all passed! +fd b6.json completed: 0 passed, 1000 FAILED fd b7.json completed, all passed! fd b8.json completed, all passed! fd b9.json completed, all passed! @@ -1290,7 +1290,7 @@ fd ba.json completed, all passed! fd bb.json completed, all passed! fd bc.json completed, all passed! fd bd.json completed, all passed! -fd be.json completed, all passed! +fd be.json completed: 0 passed, 1000 FAILED fd bf.json completed, all passed! fd c0.json completed, all passed! fd c1.json completed, all passed! @@ -1611,5 +1611,5 @@ fd ff.json completed, all passed! fe.json completed, all passed! ff.json completed, all passed! -passed: 1584670, failed: 25330, total 98% -completed in 0m 8s +passed: 1564670, failed: 45330, total 97% +completed in 0m 9s diff --git a/tests/rad_tests/src/main.rs b/tests/rad_tests/src/main.rs index 82d7eb7..ef42939 100644 --- a/tests/rad_tests/src/main.rs +++ b/tests/rad_tests/src/main.rs @@ -46,6 +46,9 @@ struct Args { /// Check instruction timings #[clap(short = 't', long)] check_timings: bool, + /// Don't check I/O instructions + #[clap(short = 'i', long)] + no_check_io: bool, /// Directory to the test suite to run #[clap(long, default_value = DEFAULT_RAD_TESTS)] testsuite: String, @@ -284,7 +287,7 @@ fn assert_state( assert_value(cpu.state.iff1 as u8, expected.iff1, "iff1")?; assert_value(cpu.state.iff2 as u8, expected.iff2, "iff2")?; - // Load data bytes into memory + // Compare data bytes in memory for (addr, byte) in expected.ram.iter() { let actual = memory .read_u8(Instant::START, *addr) @@ -292,7 +295,7 @@ fn assert_state( assert_value(actual, *byte, &format!("ram at {:x}", addr))?; } - // Load data bytes into io space + // Compare data bytes in io space for port in ports.iter() { if port.atype == "w" { let actual = io @@ -319,15 +322,14 @@ fn step_cpu_and_assert( assert_state(cpu, memory, io, &case.final_state, args.check_extra_flags, &case.ports)?; if args.check_timings { - // TODO re-enable. not sure why it can't divide here - //let cycles = clock_elapsed / cpu.frequency.period_duration(); - //if cycles != case.cycles.len() { - // return Err(Error::Assertion(format!( - // "expected instruction to take {} cycles, but took {}", - // case.cycles.len(), - // cycles - // ))); - //} + let cycles = clock_elapsed.as_duration() / cpu.frequency.period_duration(); + if cycles != case.cycles.len() as u64 { + return Err(Error::Assertion(format!( + "expected instruction to take {} cycles, but took {}", + case.cycles.len(), + cycles + ))); + } } Ok(()) @@ -379,6 +381,10 @@ fn test_json_file(path: PathBuf, args: &Args) -> (usize, usize, String) { } } + if args.no_check_io && !case.ports.is_empty() { + continue; + } + // Sort the ram memory for debugging help if args.debug { case.initial_state.ram.sort_by_key(|(addr, _)| *addr);