Spaces:
Sleeping
Sleeping
| from app.services.smoother import smooth_transitions, merge_segments | |
| def d(key, mode, start, end, conf=0.85): | |
| return {"key": key, "mode": mode, "start": start, "end": end, "confidence": conf} | |
| def test_smooth_removes_outlier(): | |
| dets = [d("G","major",0,10), d("G","major",10,20), d("E","minor",20,30,0.6), | |
| d("G","major",30,40), d("G","major",40,50)] | |
| sm = smooth_transitions(dets, window_size=3) | |
| assert sm[2]["key"] == "G" and sm[2]["mode"] == "major" | |
| def test_smooth_preserves_genuine_transition(): | |
| dets = [d("G","major",0,10), d("G","major",10,20), d("E","minor",20,30), | |
| d("E","minor",30,40), d("E","minor",40,50)] | |
| sm = smooth_transitions(dets, window_size=3) | |
| assert sm[4]["key"] == "E" and sm[4]["mode"] == "minor" | |
| def test_smooth_preserves_timing(): | |
| dets = [d("G","major", i*10, (i+1)*10) for i in range(5)] | |
| for orig, sm in zip(dets, smooth_transitions(dets, window_size=3)): | |
| assert sm["start"] == orig["start"] and sm["end"] == orig["end"] | |
| def test_merge_combines_consecutive(): | |
| dets = [d("G","major",0,10,0.9), d("G","major",10,20,0.85), d("E","minor",20,30,0.82)] | |
| merged = merge_segments(dets) | |
| assert len(merged) == 2 | |
| assert merged[0]["end"] == 20.0 | |
| def test_merge_averages_confidence(): | |
| dets = [d("G","major",0,10,0.8), d("G","major",10,20,0.6)] | |
| merged = merge_segments(dets) | |
| assert abs(merged[0]["confidence"] - 0.7) < 0.01 | |