"""Tests para clean_pdf_text."""

from __future__ import annotations

import os
import sys

sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", ".."))

from core.clean_pdf_text import clean_pdf_text


def test_string_vacio_retorna_vacio():
    """string vacio retorna vacio"""
    assert clean_pdf_text("") == ""


def test_marca_de_pagina_1_20_se_elimina():
    """marca de pagina 1/20 se elimina"""
    result = clean_pdf_text("1/20\nfoo bar")
    assert "1/20" not in result
    assert "foo bar" in result


def test_dehyphenation_exa_newline_mple():
    """dehyphenation exa-newline-mple -> example"""
    result = clean_pdf_text("exa-\nmple")
    assert result == "example"


def test_espacios_duplicados_se_colapsan():
    """espacios duplicados se colapsan"""
    result = clean_pdf_text("ab    cd")
    assert result == "ab cd"


def test_salto_de_linea_en_mitad_de_oracion_se_une_con_espacio():
    """salto de linea en mitad de oracion se une con espacio"""
    result = clean_pdf_text("Pablo Isla es el\npresidente de Inditex")
    assert result == "Pablo Isla es el presidente de Inditex"


def test_salto_de_linea_tras_punto_se_preserva():
    """salto de linea tras punto se preserva"""
    result = clean_pdf_text("Primera oracion.\nSegunda oracion.")
    # El salto tras punto debe quedar (no se une con espacio)
    assert "\n" in result
    assert "Primera oracion." in result
    assert "Segunda oracion." in result
