test: cover audio, sequences, pattern direction, and settings
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
43
tests/test_sequence_beat_phase_sync.py
Normal file
43
tests/test_sequence_beat_phase_sync.py
Normal file
@@ -0,0 +1,43 @@
|
||||
"""Sequence beat phase alignment (sync to musical downbeat)."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
SRC_PATH = os.path.join(PROJECT_ROOT, "src")
|
||||
if SRC_PATH not in sys.path:
|
||||
sys.path.insert(0, SRC_PATH)
|
||||
|
||||
from util.sequence_playback import apply_beat_phase_sync # noqa: E402
|
||||
|
||||
|
||||
def _ctx(lane_states):
|
||||
return {"lane_states": lane_states, "sequence_loop_beat": 5}
|
||||
|
||||
|
||||
def test_apply_beat_phase_sync_step_resets_beat_count_only():
|
||||
ctx = _ctx(
|
||||
[
|
||||
{"stepIdx": 2, "beatCount": 3, "done": False},
|
||||
{"stepIdx": 1, "beatCount": 1, "done": True},
|
||||
]
|
||||
)
|
||||
ok, resend = apply_beat_phase_sync(ctx, "step")
|
||||
assert ok is True
|
||||
assert resend is False
|
||||
assert ctx["lane_states"][0]["stepIdx"] == 2
|
||||
assert ctx["lane_states"][0]["beatCount"] == 0
|
||||
assert ctx["lane_states"][1]["beatCount"] == 1
|
||||
assert ctx["sequence_loop_beat"] == 5
|
||||
|
||||
|
||||
def test_apply_beat_phase_sync_pass_restarts_pass():
|
||||
ctx = _ctx([{"stepIdx": 2, "beatCount": 3, "done": False}])
|
||||
ok, resend = apply_beat_phase_sync(ctx, "pass")
|
||||
assert ok is True
|
||||
assert resend is True
|
||||
st = ctx["lane_states"][0]
|
||||
assert st["stepIdx"] == 0
|
||||
assert st["beatCount"] == 0
|
||||
assert st["done"] is False
|
||||
assert ctx["sequence_loop_beat"] == 0
|
||||
Reference in New Issue
Block a user