Skip to content

Commit c8b2f39

Browse files
committed
AudioBufferSource: Split and extend unit tests
1 parent fbba66f commit c8b2f39

File tree

1 file changed

+42
-55
lines changed

1 file changed

+42
-55
lines changed

src/node/audio_buffer_source.rs

Lines changed: 42 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,43 +1251,24 @@ mod tests {
12511251
}
12521252

12531253
#[test]
1254-
// just to make things more readable when populating expected values
1255-
#[allow(clippy::erasing_op)]
1256-
#[allow(clippy::identity_op)]
1257-
fn test_fast_track_loop() {
1258-
// buffer smaller than block
1259-
{
1260-
let sample_rate = 480000.;
1261-
let context = OfflineAudioContext::new(1, RENDER_QUANTUM_SIZE * 2, sample_rate);
1262-
1263-
let mut dirac = context.create_buffer(1, RENDER_QUANTUM_SIZE / 2, sample_rate);
1264-
dirac.copy_to_channel(&[1.], 0);
1265-
1266-
let src = context.create_buffer_source();
1267-
src.connect(&context.destination());
1268-
src.set_loop(true);
1269-
src.set_buffer(dirac);
1270-
src.start();
1271-
1272-
let result = context.start_rendering_sync();
1273-
let channel = result.get_channel_data(0);
1274-
1275-
let mut expected = vec![0.; 256];
1276-
expected[64 * 0] = 1.;
1277-
expected[64 * 1] = 1.;
1278-
expected[64 * 2] = 1.;
1279-
expected[64 * 3] = 1.;
1280-
1281-
assert_float_eq!(channel[..], expected[..], abs_all <= 0.);
1282-
}
1283-
1284-
// buffer larger than block
1285-
{
1286-
let sample_rate = 480000.;
1287-
let len = RENDER_QUANTUM_SIZE * 4;
1254+
fn test_fast_track_loop_mono() {
1255+
let sample_rate = 480000.;
1256+
let len = RENDER_QUANTUM_SIZE * 4;
1257+
1258+
for buffer_len in [
1259+
RENDER_QUANTUM_SIZE / 2 - 1,
1260+
RENDER_QUANTUM_SIZE / 2,
1261+
RENDER_QUANTUM_SIZE / 2 + 1,
1262+
RENDER_QUANTUM_SIZE - 1,
1263+
RENDER_QUANTUM_SIZE,
1264+
RENDER_QUANTUM_SIZE + 1,
1265+
RENDER_QUANTUM_SIZE * 2 - 1,
1266+
RENDER_QUANTUM_SIZE * 2,
1267+
RENDER_QUANTUM_SIZE * 2 + 1,
1268+
] {
12881269
let context = OfflineAudioContext::new(1, len, sample_rate);
12891270

1290-
let mut dirac = context.create_buffer(1, 129, sample_rate);
1271+
let mut dirac = context.create_buffer(1, buffer_len, sample_rate);
12911272
dirac.copy_to_channel(&[1.], 0);
12921273

12931274
let src = context.create_buffer_source();
@@ -1300,21 +1281,32 @@ mod tests {
13001281
let channel = result.get_channel_data(0);
13011282

13021283
let mut expected = vec![0.; len];
1303-
expected[129 * 0] = 1.;
1304-
expected[129 * 1] = 1.;
1305-
expected[129 * 2] = 1.;
1306-
expected[129 * 3] = 1.;
1284+
for i in (0..len).step_by(buffer_len) {
1285+
expected[i] = 1.;
1286+
}
13071287

13081288
assert_float_eq!(channel[..], expected[..], abs_all <= 0.);
13091289
}
1290+
}
13101291

1311-
// stereo
1312-
{
1313-
let sample_rate = 480000.;
1314-
let len = RENDER_QUANTUM_SIZE * 4;
1292+
#[test]
1293+
fn test_fast_track_loop_stereo() {
1294+
let sample_rate = 480000.;
1295+
let len = RENDER_QUANTUM_SIZE * 4;
1296+
1297+
for buffer_len in [
1298+
RENDER_QUANTUM_SIZE / 2 - 1,
1299+
RENDER_QUANTUM_SIZE / 2,
1300+
RENDER_QUANTUM_SIZE / 2 + 1,
1301+
RENDER_QUANTUM_SIZE - 1,
1302+
RENDER_QUANTUM_SIZE,
1303+
RENDER_QUANTUM_SIZE + 1,
1304+
RENDER_QUANTUM_SIZE * 2 - 1,
1305+
RENDER_QUANTUM_SIZE * 2,
1306+
RENDER_QUANTUM_SIZE * 2 + 1,
1307+
] {
13151308
let context = OfflineAudioContext::new(2, len, sample_rate);
1316-
1317-
let mut dirac = context.create_buffer(2, 129, sample_rate);
1309+
let mut dirac = context.create_buffer(2, buffer_len, sample_rate);
13181310
dirac.copy_to_channel(&[1.], 0);
13191311
dirac.copy_to_channel(&[0., 1.], 1);
13201312

@@ -1326,17 +1318,12 @@ mod tests {
13261318

13271319
let result = context.start_rendering_sync();
13281320

1329-
let mut expected_left = vec![0.; len];
1330-
expected_left[129 * 0] = 1.;
1331-
expected_left[129 * 1] = 1.;
1332-
expected_left[129 * 2] = 1.;
1333-
expected_left[129 * 3] = 1.;
1334-
1321+
let mut expected_left: Vec<f32> = vec![0.; len];
13351322
let mut expected_right = vec![0.; len];
1336-
expected_right[129 * 0 + 1] = 1.;
1337-
expected_right[129 * 1 + 1] = 1.;
1338-
expected_right[129 * 2 + 1] = 1.;
1339-
expected_right[129 * 3 + 1] = 1.;
1323+
for i in (0..len - 1).step_by(buffer_len) {
1324+
expected_left[i] = 1.;
1325+
expected_right[i + 1] = 1.;
1326+
}
13401327

13411328
assert_float_eq!(
13421329
result.get_channel_data(0)[..],

0 commit comments

Comments
 (0)