Merge branch 'flow/m3te/P10.4' into m3te-plan
This commit is contained in:
34
tests/cascade_cue.sx
Normal file
34
tests/cascade_cue.sx
Normal file
@@ -0,0 +1,34 @@
|
||||
// P10.4 — Cascade-cue selection snapshot: prove the cascade-depth → combo-cue
|
||||
// mapping is a PURE, headless clamp. It reuses audio.sx's `cascade_cue_index`
|
||||
// (and `cascade_cue_name`) UNCHANGED — the exact functions `play_cascade` calls
|
||||
// — so the escalation logic the audio playback path can't gate-cover is covered
|
||||
// here with no audio. The mapping clamps depth <= 1 to the first cue (combo1)
|
||||
// and depth >= COMBO_CLIPS to the last (combo5), stepping up monotonically in
|
||||
// between. The depth→index/name table below is locked by the committed snapshot.
|
||||
#import "modules/std.sx";
|
||||
#import "audio.sx";
|
||||
|
||||
main :: () -> s32 {
|
||||
print("== cascade cue selection (depth -> combo cue) ==\n");
|
||||
|
||||
// Walk a representative depth range (0..9) so both clamps and the monotonic
|
||||
// middle are visible: depths 0,1 pin to the first cue; depths >= 5 pin to
|
||||
// the last; 2,3,4 step up one cue at a time.
|
||||
prev : s64 = -1;
|
||||
for 0..10: (depth) {
|
||||
idx := cascade_cue_index(depth);
|
||||
print("depth {} -> idx {} ({})\n", depth, idx, cascade_cue_name(idx));
|
||||
// The mapping must never step down as depth grows.
|
||||
if idx < prev { print("FAIL: cue index decreased at depth {}\n", depth); return 1; }
|
||||
prev = idx;
|
||||
}
|
||||
|
||||
// Explicit clamp boundaries, independent of the loop above.
|
||||
if cascade_cue_index(0) != 0 { print("FAIL: depth 0 not clamped to first cue\n"); return 1; }
|
||||
if cascade_cue_index(1) != 0 { print("FAIL: depth 1 not clamped to first cue\n"); return 1; }
|
||||
if cascade_cue_index(COMBO_CLIPS) != COMBO_CLIPS - 1 { print("FAIL: depth COMBO_CLIPS not at last cue\n"); return 1; }
|
||||
if cascade_cue_index(9) != COMBO_CLIPS - 1 { print("FAIL: deep cascade not clamped to last cue\n"); return 1; }
|
||||
|
||||
print("ok: cascade cue mapping clamps into combo1..combo{}\n", COMBO_CLIPS);
|
||||
return 0;
|
||||
}
|
||||
1
tests/expected/cascade_cue.exit
Normal file
1
tests/expected/cascade_cue.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
12
tests/expected/cascade_cue.stdout
Normal file
12
tests/expected/cascade_cue.stdout
Normal file
@@ -0,0 +1,12 @@
|
||||
== cascade cue selection (depth -> combo cue) ==
|
||||
depth 0 -> idx 0 ([sx] audio: cue combo1)
|
||||
depth 1 -> idx 0 ([sx] audio: cue combo1)
|
||||
depth 2 -> idx 1 ([sx] audio: cue combo2)
|
||||
depth 3 -> idx 2 ([sx] audio: cue combo3)
|
||||
depth 4 -> idx 3 ([sx] audio: cue combo4)
|
||||
depth 5 -> idx 4 ([sx] audio: cue combo5)
|
||||
depth 6 -> idx 4 ([sx] audio: cue combo5)
|
||||
depth 7 -> idx 4 ([sx] audio: cue combo5)
|
||||
depth 8 -> idx 4 ([sx] audio: cue combo5)
|
||||
depth 9 -> idx 4 ([sx] audio: cue combo5)
|
||||
ok: cascade cue mapping clamps into combo1..combo5
|
||||
Reference in New Issue
Block a user