"""核心数据结构单元测试"""

from datetime import datetime

from models import Chunk, CLIArgs, ProcessResult


class TestChunk:
    def test_creation(self):
        chunk = Chunk(title="概述", content="这是内容")
        assert chunk.title == "概述"
        assert chunk.content == "这是内容"

    def test_equality(self):
        a = Chunk(title="t", content="c")
        b = Chunk(title="t", content="c")
        assert a == b


class TestProcessResult:
    def test_creation(self):
        now = datetime.now()
        chunks = [Chunk("t1", "c1"), Chunk("t2", "c2")]
        result = ProcessResult(
            source_file="input.pdf",
            output_file="output.md",
            chunks=chunks,
            process_time=now,
            total_chunks=2,
        )
        assert result.source_file == "input.pdf"
        assert result.output_file == "output.md"
        assert len(result.chunks) == 2
        assert result.process_time == now
        assert result.total_chunks == 2


class TestCLIArgs:
    def test_required_fields(self):
        args = CLIArgs(input_file="doc.pdf", api_key="sk-123")
        assert args.input_file == "doc.pdf"
        assert args.api_key == "sk-123"

    def test_defaults(self):
        args = CLIArgs(input_file="doc.pdf", api_key="sk-123")
        assert args.output_file is None
        assert args.delimiter == "---"

    def test_custom_values(self):
        args = CLIArgs(
            input_file="doc.pdf",
            api_key="sk-123",
            output_file="out.md",
            delimiter="***",
        )
        assert args.output_file == "out.md"
        assert args.delimiter == "***"
