"""PDFSplitter 测试.""" import pytest from pathlib import Path pymupdf = pytest.importorskip("fitz", reason="pymupdf 未安装") class TestPDFSplitter: """PDFSplitter 测试(需 pymupdf).""" def test_split_simple_pdf(self, tmp_path): """用 pymupdf 创建一个简单 PDF 并测试分块.""" from src.core.splitters.pdf import PDFSplitter import fitz pdf_path = tmp_path / "test.pdf" doc = fitz.open() # 插入纯 ASCII 文本避免 CJK 字体编码问题 doc.new_page().insert_text((72, 72), "This is PDF document content.\n\nSecond paragraph text.") doc.save(str(pdf_path)) doc.close() s = PDFSplitter(max_size=500) chunks = s.split(str(pdf_path), source_file="test.pdf") assert len(chunks) >= 1 all_text = "".join(c["content"] for c in chunks) assert "PDF document" in all_text assert "Second paragraph" in all_text def test_empty_pdf(self, tmp_path): """空 PDF(有页但无文字)返回空列表.""" from src.core.splitters.pdf import PDFSplitter import fitz pdf_path = tmp_path / "empty.pdf" doc = fitz.open() doc.new_page() # pymupdf 必须有至少一页才能保存 doc.save(str(pdf_path)) doc.close() s = PDFSplitter() chunks = s.split(str(pdf_path), source_file="empty.pdf") assert chunks == [] def test_pdf_has_split_method(self): """PDFSplitter 遵循 Splitter Protocol.""" from src.core.splitters.pdf import PDFSplitter s = PDFSplitter() assert hasattr(s, "split")