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.
49 lines
2.0 KiB
Python
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()
|