Spaces:
Running
Running
File size: 2,289 Bytes
a53c25d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | # tests/test_sprite_test.py
#
# Test suite for SPRITE Test module.
# 8 tests covering impossible distributions, possible ones,
# edge cases, and risk level detection.
import pytest
from src.scipeerai.modules.sprite_test import SpriteTest
engine = SpriteTest()
def test_impossible_distribution_detected():
"""M=2.50, SD=1.20, N=8, Scale=1-5 is impossible."""
r = engine.analyze("mean=2.50 sd=1.20 n=8 scale=1-5")
assert len(r.impossible_combinations) == 1
assert r.risk_level in ("high", "critical")
def test_possible_distribution_passes():
"""M=3.00, SD=0.00, N=5, Scale=1-5 — all values equal 3."""
r = engine.analyze("mean=3.00 sd=0.00 n=5 scale=1-5")
assert len(r.impossible_combinations) == 0
assert r.risk_level == "low"
def test_no_groups_detected():
"""Text with no mean/SD/N — low risk."""
r = engine.analyze(
"This study examined qualitative themes "
"across multiple interviews with participants "
"using thematic analysis methods throughout."
)
assert r.sprite_score == 0.0
assert r.risk_level == "low"
def test_flag_content():
"""Flag contains correct evidence and suggestion."""
r = engine.analyze("mean=2.50 sd=1.20 n=8 scale=1-5")
assert r.flags_count == 1
flag = r.flags[0]
assert flag.flag_type == "sprite_impossible_distribution"
assert flag.severity == "high"
assert "2.5" in flag.evidence
assert "1.2" in flag.evidence
def test_sprite_score_calculation():
"""Score = impossible / total groups."""
r = engine.analyze("mean=2.50 sd=1.20 n=8 scale=1-5")
assert r.sprite_score == 1.0
def test_large_n_variance_bounds():
"""Large N=100 — variance bounds check runs."""
r = engine.analyze("mean=3.00 sd=0.50 n=100 scale=1-5")
assert r.risk_level in ("low", "medium", "high", "critical")
def test_summary_contains_key_info():
"""Summary mentions analyzed groups and failure rate."""
r = engine.analyze("mean=2.50 sd=1.20 n=8 scale=1-5")
assert "SPRITE Test" in r.summary
assert "1" in r.summary
def test_risk_level_critical_on_impossible():
"""Single impossible group gives high or critical."""
r = engine.analyze("mean=2.50 sd=1.20 n=8 scale=1-5")
assert r.risk_level in ("high", "critical") |