import json

import pytest
from .util import working_directory

from ..cli import process


@pytest.mark.integration
def test_cli_json(tmp_path):
    """Test that the cli/process() yields a loadable JSON report"""

    with working_directory(str(tmp_path)):
        with open("gt.txt", "w") as gtf:
            gtf.write("AAAAA")
        with open("ocr.txt", "w") as ocrf:
            ocrf.write("AAAAB")

        with open("gt.txt", "r") as gtf:
            print(gtf.read())
        process("gt.txt", "ocr.txt", "report")
        with open("report.json", "r") as jsonf:
            print(jsonf.read())
        with open("report.json", "r") as jsonf:
            j = json.load(jsonf)
            assert j["cer"] == pytest.approx(0.2)


@pytest.mark.integration
def test_cli_json_cer_is_infinity(tmp_path):
    """Test that the cli/process() yields a loadable JSON report when CER == inf"""

    with working_directory(str(tmp_path)):
        with open("gt.txt", "w") as gtf:
            gtf.write("")  # Empty to yield CER == inf
        with open("ocr.txt", "w") as ocrf:
            ocrf.write("Not important")

        process("gt.txt", "ocr.txt", "report")
        with open("report.json", "r") as jsonf:
            j = json.load(jsonf)
            assert j["cer"] == pytest.approx(float("inf"))
