@@ -1251,43 +1251,24 @@ mod tests {
1251
1251
}
1252
1252
1253
1253
#[ 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
+ ] {
1288
1269
let context = OfflineAudioContext :: new ( 1 , len, sample_rate) ;
1289
1270
1290
- let mut dirac = context. create_buffer ( 1 , 129 , sample_rate) ;
1271
+ let mut dirac = context. create_buffer ( 1 , buffer_len , sample_rate) ;
1291
1272
dirac. copy_to_channel ( & [ 1. ] , 0 ) ;
1292
1273
1293
1274
let src = context. create_buffer_source ( ) ;
@@ -1300,21 +1281,32 @@ mod tests {
1300
1281
let channel = result. get_channel_data ( 0 ) ;
1301
1282
1302
1283
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
+ }
1307
1287
1308
1288
assert_float_eq ! ( channel[ ..] , expected[ ..] , abs_all <= 0. ) ;
1309
1289
}
1290
+ }
1310
1291
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
+ ] {
1315
1308
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) ;
1318
1310
dirac. copy_to_channel ( & [ 1. ] , 0 ) ;
1319
1311
dirac. copy_to_channel ( & [ 0. , 1. ] , 1 ) ;
1320
1312
@@ -1326,17 +1318,12 @@ mod tests {
1326
1318
1327
1319
let result = context. start_rendering_sync ( ) ;
1328
1320
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] ;
1335
1322
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
+ }
1340
1327
1341
1328
assert_float_eq ! (
1342
1329
result. get_channel_data( 0 ) [ ..] ,
0 commit comments