Первичная версия: стилометрия реплик, LSA и протокол экспериментов
This commit is contained in:
52
lab1/tests/test_io.py
Normal file
52
lab1/tests/test_io.py
Normal file
@@ -0,0 +1,52 @@
|
||||
"""Тесты чтения и валидации корпуса."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from stylometry.io import (
|
||||
DEFAULT_DATA_PATH,
|
||||
compare_with_stats,
|
||||
corpus_fingerprint,
|
||||
read_corpus,
|
||||
read_stats,
|
||||
validate_corpus,
|
||||
)
|
||||
|
||||
|
||||
def test_read_corpus_shape() -> None:
|
||||
frame = read_corpus()
|
||||
assert len(frame) == 2005
|
||||
assert frame["character"].nunique() == 34
|
||||
assert {"line_id", "text", "character", "text_raw", "placeholder_count"} <= set(frame.columns)
|
||||
assert frame["text"].str.len().gt(0).all()
|
||||
|
||||
|
||||
def test_corpus_is_cp1251() -> None:
|
||||
raw = DEFAULT_DATA_PATH.read_bytes()
|
||||
assert raw.decode("cp1251").startswith("Реплика;Персонаж")
|
||||
|
||||
|
||||
def test_validate_corpus() -> None:
|
||||
frame = read_corpus()
|
||||
stats = validate_corpus(frame)
|
||||
assert stats["n_lines"] == 2005
|
||||
assert stats["n_characters"] == 34
|
||||
assert stats["n_duplicate_texts"] == 0
|
||||
assert stats["n_words"] > 30_000
|
||||
|
||||
|
||||
def test_compare_with_stats() -> None:
|
||||
frame = read_corpus()
|
||||
comparison = compare_with_stats(frame, read_stats())
|
||||
assert not comparison.empty
|
||||
assert (comparison["difference"] == 0).all()
|
||||
|
||||
|
||||
def test_fingerprint_is_stable() -> None:
|
||||
first = corpus_fingerprint()
|
||||
second = corpus_fingerprint()
|
||||
assert first == second
|
||||
assert len(first) == 64
|
||||
Reference in New Issue
Block a user