import pytest

from semantica.normalize.date_normalizer import DateNormalizer
from semantica.normalize.number_normalizer import NumberNormalizer


@pytest.mark.parametrize("date_str", ["2026-02-03", "Ferbuary 2nd, 2026", "9 days ago"])
def test_data_parsing_variations(benchmark, date_str):
    """Compare speed of different date formats."""
    normalizer = DateNormalizer()
    benchmark.pedantic(
        lambda: normalizer.normalize_date(date_str), iterations=10, rounds=20
    )


def test_number_normalization(benchmark):
    """Benchmarks number parsing with currency and unit stripping."""
    normalizer = NumberNormalizer()
    raw_inputs = ["$1,234.56", "1.5k", "50%", "1,000,000"] * 100

    def run():
        for n in raw_inputs:
            normalizer.normalize_number(n)

    benchmark.pedantic(run, iterations=5, rounds=20)
