import importlib.util from pathlib import Path from codelock_affect.evaluation import text_metrics spec = importlib.util.spec_from_file_location( "builder", Path(__file__).parents[1] / "scripts/build_dataset.py" ) builder = importlib.util.module_from_spec(spec) spec.loader.exec_module(builder) def test_reproducible_grouped_split_and_counts(): rows = builder.build() builder.validate(rows) assert rows == builder.build() train = {r["scenario_id"] for r in rows if r["split"] == "train"} test = {r["scenario_id"] for r in rows if r["split"] == "test"} assert len(train) == 80 and len(test) == 20 and not train & test assert rows != builder.build(1702) def test_repetition_metric_detects_failure_without_calling_it_emotion(): ordinary = text_metrics("The desk is beside the bed. I can read the terminal.") repeated = text_metrics("I am afraid. I am afraid. I am afraid. I am afraid.") assert ordinary["repeated_trigram_fraction"] == 0 assert repeated["repeated_trigram_fraction"] > 0.5