@@ -302,6 +302,84 @@ tape( 'the function converts a view linear index to a linear index in an underly
302
302
t . end ( ) ;
303
303
} ) ;
304
304
305
+ tape ( 'the function converts a view linear index to a linear index in an underlying data buffer (order=row-major, permuted)' , function test ( t ) {
306
+ var strides ;
307
+ var offset ;
308
+ var order ;
309
+ var shape ;
310
+ var idx ;
311
+
312
+ shape = [ 2 , 2 , 2 ] ;
313
+ order = 'row-major' ;
314
+ strides = [ 1 , 4 , 2 ] ; // normal: [ 4, 2, 1 ]
315
+ offset = 0 ;
316
+
317
+ idx = vind2bind ( shape , strides , offset , order , 0 , 'throw' ) ;
318
+ t . strictEqual ( idx , 0 , 'returns expected value' ) ;
319
+
320
+ idx = vind2bind ( shape , strides , offset , order , 1 , 'throw' ) ;
321
+ t . strictEqual ( idx , 2 , 'returns expected value' ) ;
322
+
323
+ idx = vind2bind ( shape , strides , offset , order , 2 , 'throw' ) ;
324
+ t . strictEqual ( idx , 4 , 'returns expected value' ) ;
325
+
326
+ idx = vind2bind ( shape , strides , offset , order , 3 , 'throw' ) ;
327
+ t . strictEqual ( idx , 6 , 'returns expected value' ) ;
328
+
329
+ idx = vind2bind ( shape , strides , offset , order , 4 , 'throw' ) ;
330
+ t . strictEqual ( idx , 1 , 'returns expected value' ) ;
331
+
332
+ idx = vind2bind ( shape , strides , offset , order , 5 , 'throw' ) ;
333
+ t . strictEqual ( idx , 3 , 'returns expected value' ) ;
334
+
335
+ idx = vind2bind ( shape , strides , offset , order , 6 , 'throw' ) ;
336
+ t . strictEqual ( idx , 5 , 'returns expected value' ) ;
337
+
338
+ idx = vind2bind ( shape , strides , offset , order , 7 , 'throw' ) ;
339
+ t . strictEqual ( idx , 7 , 'returns expected value' ) ;
340
+
341
+ t . end ( ) ;
342
+ } ) ;
343
+
344
+ tape ( 'the function converts a view linear index to a linear index in an underlying data buffer (order=column-major, permuted)' , function test ( t ) {
345
+ var strides ;
346
+ var offset ;
347
+ var order ;
348
+ var shape ;
349
+ var idx ;
350
+
351
+ shape = [ 2 , 2 , 2 ] ;
352
+ order = 'column-major' ;
353
+ strides = [ 2 , 4 , 1 ] ; // normal: [ 1, 2, 4 ]
354
+ offset = 0 ;
355
+
356
+ idx = vind2bind ( shape , strides , offset , order , 0 , 'throw' ) ;
357
+ t . strictEqual ( idx , 0 , 'returns expected value' ) ;
358
+
359
+ idx = vind2bind ( shape , strides , offset , order , 1 , 'throw' ) ;
360
+ t . strictEqual ( idx , 2 , 'returns expected value' ) ;
361
+
362
+ idx = vind2bind ( shape , strides , offset , order , 2 , 'throw' ) ;
363
+ t . strictEqual ( idx , 4 , 'returns expected value' ) ;
364
+
365
+ idx = vind2bind ( shape , strides , offset , order , 3 , 'throw' ) ;
366
+ t . strictEqual ( idx , 6 , 'returns expected value' ) ;
367
+
368
+ idx = vind2bind ( shape , strides , offset , order , 4 , 'throw' ) ;
369
+ t . strictEqual ( idx , 1 , 'returns expected value' ) ;
370
+
371
+ idx = vind2bind ( shape , strides , offset , order , 5 , 'throw' ) ;
372
+ t . strictEqual ( idx , 3 , 'returns expected value' ) ;
373
+
374
+ idx = vind2bind ( shape , strides , offset , order , 6 , 'throw' ) ;
375
+ t . strictEqual ( idx , 5 , 'returns expected value' ) ;
376
+
377
+ idx = vind2bind ( shape , strides , offset , order , 7 , 'throw' ) ;
378
+ t . strictEqual ( idx , 7 , 'returns expected value' ) ;
379
+
380
+ t . end ( ) ;
381
+ } ) ;
382
+
305
383
tape ( 'if the `mode` is `throw`, the function throws if provided a linear index which exceeds array dimensions (order=row-major)' , function test ( t ) {
306
384
var strides ;
307
385
var offset ;
0 commit comments