@@ -1262,43 +1262,24 @@ mod tests {
1262
1262
}
1263
1263
1264
1264
#[ test]
1265
- // just to make things more readable when populating expected values
1266
- #[ allow( clippy:: erasing_op) ]
1267
- #[ allow( clippy:: identity_op) ]
1268
- fn test_fast_track_loop ( ) {
1269
- // buffer smaller than block
1270
- {
1271
- let sample_rate = 480000. ;
1272
- let context = OfflineAudioContext :: new ( 1 , RENDER_QUANTUM_SIZE * 2 , sample_rate) ;
1273
-
1274
- let mut dirac = context. create_buffer ( 1 , RENDER_QUANTUM_SIZE / 2 , sample_rate) ;
1275
- dirac. copy_to_channel ( & [ 1. ] , 0 ) ;
1276
-
1277
- let src = context. create_buffer_source ( ) ;
1278
- src. connect ( & context. destination ( ) ) ;
1279
- src. set_loop ( true ) ;
1280
- src. set_buffer ( dirac) ;
1281
- src. start ( ) ;
1282
-
1283
- let result = context. start_rendering_sync ( ) ;
1284
- let channel = result. get_channel_data ( 0 ) ;
1285
-
1286
- let mut expected = vec ! [ 0. ; 256 ] ;
1287
- expected[ 64 * 0 ] = 1. ;
1288
- expected[ 64 * 1 ] = 1. ;
1289
- expected[ 64 * 2 ] = 1. ;
1290
- expected[ 64 * 3 ] = 1. ;
1291
-
1292
- assert_float_eq ! ( channel[ ..] , expected[ ..] , abs_all <= 0. ) ;
1293
- }
1294
-
1295
- // buffer larger than block
1296
- {
1297
- let sample_rate = 480000. ;
1298
- let len = RENDER_QUANTUM_SIZE * 4 ;
1265
+ fn test_fast_track_loop_mono ( ) {
1266
+ let sample_rate = 480000. ;
1267
+ let len = RENDER_QUANTUM_SIZE * 4 ;
1268
+
1269
+ for buffer_len in [
1270
+ RENDER_QUANTUM_SIZE / 2 - 1 ,
1271
+ RENDER_QUANTUM_SIZE / 2 ,
1272
+ RENDER_QUANTUM_SIZE / 2 + 1 ,
1273
+ RENDER_QUANTUM_SIZE - 1 ,
1274
+ RENDER_QUANTUM_SIZE ,
1275
+ RENDER_QUANTUM_SIZE + 1 ,
1276
+ RENDER_QUANTUM_SIZE * 2 - 1 ,
1277
+ RENDER_QUANTUM_SIZE * 2 ,
1278
+ RENDER_QUANTUM_SIZE * 2 + 1 ,
1279
+ ] {
1299
1280
let context = OfflineAudioContext :: new ( 1 , len, sample_rate) ;
1300
1281
1301
- let mut dirac = context. create_buffer ( 1 , 129 , sample_rate) ;
1282
+ let mut dirac = context. create_buffer ( 1 , buffer_len , sample_rate) ;
1302
1283
dirac. copy_to_channel ( & [ 1. ] , 0 ) ;
1303
1284
1304
1285
let src = context. create_buffer_source ( ) ;
@@ -1311,21 +1292,32 @@ mod tests {
1311
1292
let channel = result. get_channel_data ( 0 ) ;
1312
1293
1313
1294
let mut expected = vec ! [ 0. ; len] ;
1314
- expected[ 129 * 0 ] = 1. ;
1315
- expected[ 129 * 1 ] = 1. ;
1316
- expected[ 129 * 2 ] = 1. ;
1317
- expected[ 129 * 3 ] = 1. ;
1295
+ for i in ( 0 ..len) . step_by ( buffer_len) {
1296
+ expected[ i] = 1. ;
1297
+ }
1318
1298
1319
1299
assert_float_eq ! ( channel[ ..] , expected[ ..] , abs_all <= 0. ) ;
1320
1300
}
1301
+ }
1321
1302
1322
- // stereo
1323
- {
1324
- let sample_rate = 480000. ;
1325
- let len = RENDER_QUANTUM_SIZE * 4 ;
1303
+ #[ test]
1304
+ fn test_fast_track_loop_stereo ( ) {
1305
+ let sample_rate = 480000. ;
1306
+ let len = RENDER_QUANTUM_SIZE * 4 ;
1307
+
1308
+ for buffer_len in [
1309
+ RENDER_QUANTUM_SIZE / 2 - 1 ,
1310
+ RENDER_QUANTUM_SIZE / 2 ,
1311
+ RENDER_QUANTUM_SIZE / 2 + 1 ,
1312
+ RENDER_QUANTUM_SIZE - 1 ,
1313
+ RENDER_QUANTUM_SIZE ,
1314
+ RENDER_QUANTUM_SIZE + 1 ,
1315
+ RENDER_QUANTUM_SIZE * 2 - 1 ,
1316
+ RENDER_QUANTUM_SIZE * 2 ,
1317
+ RENDER_QUANTUM_SIZE * 2 + 1 ,
1318
+ ] {
1326
1319
let context = OfflineAudioContext :: new ( 2 , len, sample_rate) ;
1327
-
1328
- let mut dirac = context. create_buffer ( 2 , 129 , sample_rate) ;
1320
+ let mut dirac = context. create_buffer ( 2 , buffer_len, sample_rate) ;
1329
1321
dirac. copy_to_channel ( & [ 1. ] , 0 ) ;
1330
1322
dirac. copy_to_channel ( & [ 0. , 1. ] , 1 ) ;
1331
1323
@@ -1337,17 +1329,12 @@ mod tests {
1337
1329
1338
1330
let result = context. start_rendering_sync ( ) ;
1339
1331
1340
- let mut expected_left = vec ! [ 0. ; len] ;
1341
- expected_left[ 129 * 0 ] = 1. ;
1342
- expected_left[ 129 * 1 ] = 1. ;
1343
- expected_left[ 129 * 2 ] = 1. ;
1344
- expected_left[ 129 * 3 ] = 1. ;
1345
-
1332
+ let mut expected_left: Vec < f32 > = vec ! [ 0. ; len] ;
1346
1333
let mut expected_right = vec ! [ 0. ; len] ;
1347
- expected_right [ 129 * 0 + 1 ] = 1. ;
1348
- expected_right [ 129 * 1 + 1 ] = 1. ;
1349
- expected_right [ 129 * 2 + 1 ] = 1. ;
1350
- expected_right [ 129 * 3 + 1 ] = 1. ;
1334
+ for i in ( 0 ..len - 1 ) . step_by ( buffer_len ) {
1335
+ expected_left [ i ] = 1. ;
1336
+ expected_right [ i + 1 ] = 1. ;
1337
+ }
1351
1338
1352
1339
assert_float_eq ! (
1353
1340
result. get_channel_data( 0 ) [ ..] ,
0 commit comments