Spaces:
Sleeping
Sleeping
| """Stance must degrade gracefully and score in the intuitive direction.""" | |
| import numpy as np | |
| from witnessbox import stance | |
| from witnessbox.stance import analyze, _score | |
| def test_silence_is_neutral_low_certainty(): | |
| y = np.zeros(16000, dtype=np.float32) | |
| r = analyze(y, 16000) | |
| assert r.tier == "NEUTRAL" and r.certainty < 0.5 | |
| def test_empty_and_none_are_neutral(): | |
| assert analyze(np.array([], dtype=np.float32), 16000).tier == "NEUTRAL" | |
| assert analyze(None, 16000).tier == "NEUTRAL" | |
| def test_always_returns_valid_result(): | |
| y = (0.2 * np.random.RandomState(0).randn(16000)).astype(np.float32) | |
| r = analyze(y, 16000) | |
| assert r.tier in {"CONFIDENT", "NEUTRAL", "HESITANT"} | |
| assert 0.0 <= r.confidence <= 100.0 | |
| def test_score_direction(): | |
| # Fluent + steady should read more confident than halting + swooping. | |
| fluent, _ = _score(pause_ratio=0.10, rate_hz=4.2, pitch_std_semitones=1.0) | |
| halting, _ = _score(pause_ratio=0.60, rate_hz=1.5, pitch_std_semitones=5.5) | |
| assert fluent > halting | |
| assert stance._tier(fluent) == "CONFIDENT" | |
| assert stance._tier(halting) == "HESITANT" | |