"""Synthetic examples only; none represents an observed subagent dispatch."""

import unittest

from measure_file import measure_bytes


class MeasurementSemantics(unittest.TestCase):
    def test_empty_file_and_terminal_newline(self):
        self.assertEqual(measure_bytes(b"")["logical_line_count"], 0)
        for sample in [b"a", b"a\n", b"a\r\n"]:
            self.assertEqual(measure_bytes(sample)["logical_line_count"], 1)
        self.assertEqual(measure_bytes(b"\n")["logical_line_count"], 1)

    def test_empty_and_whitespace_lines_are_distinct(self):
        receipt = measure_bytes(b"a\n\n \nb")
        self.assertEqual(receipt["logical_line_count"], 4)
        self.assertEqual(receipt["newline_count"], 3)
        self.assertEqual(receipt["nonempty_line_count"], 3)
        self.assertEqual(receipt["nonblank_line_count"], 2)

    def test_same_text_metrics_do_not_imply_same_bytes(self):
        first = measure_bytes(b"## A\n\nend\n")
        second = measure_bytes(b"\xef\xbb\xbf## A\r\n\r\nend\r\n")
        self.assertEqual(first["logical_line_count"], second["logical_line_count"])
        self.assertEqual(first["lexical_h2_headings"], second["lexical_h2_headings"])
        self.assertNotEqual(first["sha256"], second["sha256"])

    def test_unsupported_inputs_fail_explicitly(self):
        with self.assertRaises(UnicodeDecodeError):
            measure_bytes(b"\xff")
        with self.assertRaises(ValueError):
            measure_bytes(b"a\rb")


if __name__ == "__main__":
    unittest.main()
