import importlib.util
import unittest
from pathlib import Path


SCRIPT = Path(__file__).resolve().parents[2] / "tools" / "invoice_ocr.py"
SPEC = importlib.util.spec_from_file_location("invoice_ocr", SCRIPT)
invoice_ocr = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(invoice_ocr)


class InvoiceOcrGroupingTest(unittest.TestCase):
    def test_does_not_chain_adjacent_baselines_into_one_row(self):
        tokens = [
            {"t": "first-left", "x": 10, "y": 100, "h": 10, "conf": 0.99},
            {"t": "first-right", "x": 80, "y": 105, "h": 10, "conf": 0.95},
            {"t": "next-row", "x": 10, "y": 111, "h": 10, "conf": 0.91},
        ]

        grouped = invoice_ocr.group_tokens(tokens)

        self.assertEqual([["first-left", "first-right"], ["next-row"]], grouped["rows"])
        self.assertEqual(2, len(grouped["spatial_rows"]))
        self.assertEqual(0.95, grouped["spatial_rows"][0]["tokens"][1]["confidence"])


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