"""Tests for the TableClassifier Protocol and its implementations."""

import asyncio

import pytest

from quber.agents.classifier import (
    ClassifierResult,
    MockClassifier,
    TableClassifier,
    get_classifier,
)


def test_mock_satisfies_protocol():
    assert isinstance(MockClassifier(), TableClassifier)


def test_mock_default_accepts():
    result = asyncio.run(MockClassifier().classify("| a |\n|---|\n| 1 |"))
    assert isinstance(result, ClassifierResult)
    assert result.is_table is True


def test_mock_injected_rejection():
    canned = ClassifierResult(is_table=False, reason="not a table")
    out = asyncio.run(MockClassifier(canned).classify("paragraph text"))
    assert out is canned
    assert out.is_table is False


def test_get_classifier_mock():
    assert isinstance(get_classifier("mock"), MockClassifier)


def test_get_classifier_unknown_raises():
    with pytest.raises(ValueError):
        get_classifier("bogus")  # type: ignore[arg-type]
