Skip to content

Commit e338ab6

Browse files
committed
Regression test for AudioBufferSourceNode stop time is > buffer length
hat tip to @b-ma in #452
1 parent 77096f5 commit e338ab6

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

src/node/audio_buffer_source.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1415,4 +1415,34 @@ mod tests {
14151415
);
14161416
}
14171417
}
1418+
1419+
#[test]
1420+
// regression test for #452
1421+
// - fast track
1422+
// - duration not set so `self.duration` is `f64::MAX`
1423+
// - stop time is > buffer length
1424+
fn test_end_of_file_fast_track_2() {
1425+
let sample_rate = 48_000.;
1426+
let mut context = OfflineAudioContext::new(1, RENDER_QUANTUM_SIZE, sample_rate);
1427+
1428+
let mut buffer = context.create_buffer(1, 5, sample_rate);
1429+
let data = vec![1.; 1];
1430+
buffer.copy_to_channel(&data, 0);
1431+
1432+
let mut src = context.create_buffer_source();
1433+
src.connect(&context.destination());
1434+
src.set_buffer(buffer);
1435+
// play in fast track
1436+
src.start_at(0.);
1437+
// stop after end of buffer but before the end of render quantum
1438+
src.stop_at(125. / sample_rate as f64);
1439+
1440+
let result = context.start_rendering_sync();
1441+
let channel = result.get_channel_data(0);
1442+
1443+
let mut expected = vec![0.; 128];
1444+
expected[0] = 1.;
1445+
1446+
assert_float_eq!(channel[..], expected[..], abs_all <= 0.);
1447+
}
14181448
}

0 commit comments

Comments
 (0)