Files
dolphin/Tools/WiiConformanceProbe/test_compare.py
T
Yaya48 c230971f07 IOS LLE: checkpoint NAND conformance and diagnostic tooling
Preserve formatted NAND boot and Wii Remote pairing, add DMA/SRAM conformance tests and a Wii comparison probe. Keep P1 profiling tools and native update A/B evidence; reject the unhelpful targeted SRAM shortcut.
2026-09-23 13:30:17 +02:00

49 lines
2.0 KiB
Python

import contextlib
import io
import tempfile
import unittest
from pathlib import Path
from compare import compare, read_capture
def capture(version=58, value=0):
return ("schema,1\nrounds,64\nobservations,1\nios_version,%d\nios_revision,6176\n"
"seq,test,round,value,extra\n0,open_fs_mode0,0,%d,0\n" % (version, value))
class CompareTest(unittest.TestCase):
def test_identical_and_first_difference(self):
with tempfile.TemporaryDirectory() as directory:
wii = Path(directory) / "wii.csv"
dolphin = Path(directory) / "dolphin.csv"
wii.write_text(capture(), encoding="utf-8")
dolphin.write_text(capture(), encoding="utf-8")
with contextlib.redirect_stdout(io.StringIO()):
self.assertEqual(compare(read_capture(wii), read_capture(dolphin)), 0)
dolphin.write_text(capture(value=-6), encoding="utf-8")
output = io.StringIO()
with contextlib.redirect_stdout(output):
self.assertEqual(compare(read_capture(wii), read_capture(dolphin)), 1)
self.assertIn("#0", output.getvalue())
def test_wrong_ios_version_is_incomparable(self):
with tempfile.TemporaryDirectory() as directory:
wii = Path(directory) / "wii.csv"
dolphin = Path(directory) / "dolphin.csv"
wii.write_text(capture(), encoding="utf-8")
dolphin.write_text(capture(version=80), encoding="utf-8")
with contextlib.redirect_stdout(io.StringIO()):
self.assertEqual(compare(read_capture(wii), read_capture(dolphin)), 2)
def test_truncated_capture_is_rejected(self):
with tempfile.TemporaryDirectory() as directory:
path = Path(directory) / "short.csv"
path.write_text(capture().replace("observations,1", "observations,2"), encoding="utf-8")
with self.assertRaises(ValueError):
read_capture(path)
if __name__ == "__main__":
unittest.main()