Files
PDFToMD/tests/test_options.py
T
김경종 7e985ae94a add files
2026-04-30 17:05:19 +09:00

50 lines
1.7 KiB
Python

from __future__ import annotations
from pathlib import Path
import pytest
from pdftomd.options import ConversionOptions, FormulaParser, RuntimeMode
def test_conversion_options_defaults_match_project_policy() -> None:
options = ConversionOptions()
assert options.runtime is RuntimeMode.CUDA
assert options.formula_parser is FormulaParser.NOUGAT
assert options.chunk_target_pages == 20
assert options.output_dir == Path("output")
assert options.resume is False
assert options.write_logs is True
def test_runtime_modes_express_cuda_fail_fast_and_auto_fallback() -> None:
assert RuntimeMode.CUDA.requires_cuda
assert not RuntimeMode.CUDA.allows_cpu_fallback
assert RuntimeMode.AUTO.allows_cpu_fallback
assert not RuntimeMode.CPU.requires_cuda
def test_conversion_options_validate_chunk_size_and_formula_boundary() -> None:
with pytest.raises(ValueError, match="chunk_target_pages"):
ConversionOptions(chunk_target_pages=0)
options = ConversionOptions(formula_parser=FormulaParser.MARKER)
assert options.formula_parser is FormulaParser.MARKER
assert not hasattr(options, "pyqt")
assert not hasattr(options, "api_url")
def test_conversion_options_normalize_optional_paths(tmp_path: Path) -> None:
options = ConversionOptions(
output_dir=tmp_path / "out",
nougat_command=tmp_path / "venv" / "Scripts" / "nougat.exe",
model_cache_dir=tmp_path / ".models",
log_dir=tmp_path / "logs",
)
assert options.output_dir == tmp_path / "out"
assert options.nougat_command is not None
assert options.model_cache_dir == tmp_path / ".models"
assert options.log_dir == tmp_path / "logs"