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.
This commit is contained in:
1 parent
b931671fde
commit
c230971f07
64 files changed
+6488
-238
No files matched your search
@@ -0,0 +1,48 @@
|
||||
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()
|
||||
Reference in new issue
Block a user