"""Тесты анализа по метаданным персонажей.""" from __future__ import annotations import pandas as pd from stylometry.metadata import ( group_confusions, load_character_metadata, subgroup_report, ) def test_metadata_table() -> None: metadata = load_character_metadata() assert len(metadata) == 34 assert {"character", "gender", "age_group", "species", "role"} <= set(metadata.columns) def test_subgroup_report() -> None: metadata = load_character_metadata() y_true = ["Abigail", "Abigail", "Alex", "Alex"] y_pred = ["Abigail", "Alex", "Alex", "Alex"] labels = ["Abigail", "Alex"] report = subgroup_report(y_true, y_pred, labels, metadata, "gender") assert {"group", "weighted_f1", "n_samples"} <= set(report.columns) assert report["n_samples"].sum() == 4 def test_group_confusions() -> None: metadata = load_character_metadata() y_true = ["Abigail", "Abigail", "Alex", "Alex"] y_pred = ["Abigail", "Alex", "Alex", "Abigail"] table = group_confusions(y_true, y_pred, metadata, "gender") assert not table.empty assert {"true_group", "pred_group", "count"} <= set(table.columns)