import csv
import unittest
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
FAULT_MODE_FILE = ROOT / "docs" / "zh" / "appendix" / "eplb_fault_mode_library.csv"
PACKAGE_FAULT_MODE_DIR = ROOT / "mindiesd" / "fault_modes"
class TestFaultModes(unittest.TestCase):
def test_eplb_fault_mode_library_schema(self):
with FAULT_MODE_FILE.open(newline="", encoding="utf-8") as file:
rows = list(csv.DictReader(file))
self.assertEqual(len(rows), 11)
self.assertEqual(len(rows[0]), 30)
self.assertTrue(all(row["模式编号"].startswith("EPLB-") for row in rows))
self.assertTrue(all(row["三级"] == "SD" for row in rows))
def test_doc_fault_mode_library_only_contains_eplb(self):
csv_files = sorted(FAULT_MODE_FILE.parent.glob("*.csv"))
self.assertEqual(csv_files, [FAULT_MODE_FILE])
def test_eplb_fault_mode_library_is_doc_reference_only(self):
setup_text = (ROOT / "setup.py").read_text(encoding="utf-8")
pyproject_text = (ROOT / "pyproject.toml").read_text(encoding="utf-8")
manifest_text = (ROOT / "MANIFEST.in").read_text(encoding="utf-8")
self.assertFalse(PACKAGE_FAULT_MODE_DIR.exists())
self.assertNotIn("fault_modes/*.csv", setup_text)
self.assertNotIn("fault_modes/*.csv", pyproject_text)
self.assertNotIn("recursive-include mindiesd/fault_modes *.csv", manifest_text)
if __name__ == "__main__":
unittest.main()