Skip to content

Commit b7368a4

Browse files
committed
fix: handle edge case when provided an empty ndarray
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent 2798013 commit b7368a4

File tree

2 files changed

+69
-2
lines changed

2 files changed

+69
-2
lines changed

lib/node_modules/@stdlib/ndarray/base/pop/lib/main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@ function pop( x, dim, writable ) {
8989
s[ dim ] = sh[ dim ] - 1;
9090

9191
// Create a truncated view:
92-
v0 = sliceTo( x, s, true, writable );
92+
v0 = sliceTo( x, s, false, writable );
9393

9494
// Create a view of the last element(s):
95-
v1 = sliceFrom( x, s, true, writable );
95+
v1 = sliceFrom( x, s, false, writable );
9696

9797
return [ v0, v1 ];
9898
}

lib/node_modules/@stdlib/ndarray/base/pop/test/test.js

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,3 +356,70 @@ tape( 'the function returns an array containing ndarrays (ndims=3, writable)', f
356356

357357
t.end();
358358
});
359+
360+
tape( 'the function returns empty views if provided an empty array (ndims=2)', function test( t ) {
361+
var actual;
362+
var buf;
363+
var ord;
364+
var sh;
365+
var st;
366+
var o;
367+
var x;
368+
369+
buf = zeroTo( 8, 'float64' );
370+
st = [ 4, 1 ];
371+
o = 0;
372+
ord = 'row-major';
373+
374+
sh = [ 2, 0 ];
375+
x = new ndarray( 'float64', buf, sh, st, o, ord );
376+
377+
actual = pop( x, 0, false );
378+
379+
t.strictEqual( isndarrayLike( actual[0] ), true, 'returns expected value' );
380+
t.strictEqual( isndarrayLike( actual[1] ), true, 'returns expected value' );
381+
t.strictEqual( isReadOnly( actual[0] ), true, 'returns expected value' );
382+
t.strictEqual( isReadOnly( actual[1] ), true, 'returns expected value' );
383+
t.deepEqual( getShape( actual[0] ), [ 1, 0 ], 'returns expected value' );
384+
t.deepEqual( getShape( actual[1] ), [ 1, 0 ], 'returns expected value' );
385+
t.deepEqual( ndarray2array( actual[0] ), [], 'returns expected value' );
386+
t.deepEqual( ndarray2array( actual[1] ), [], 'returns expected value' );
387+
388+
actual = pop( x, 1, false );
389+
390+
t.strictEqual( isndarrayLike( actual[0] ), true, 'returns expected value' );
391+
t.strictEqual( isndarrayLike( actual[1] ), true, 'returns expected value' );
392+
t.strictEqual( isReadOnly( actual[0] ), true, 'returns expected value' );
393+
t.strictEqual( isReadOnly( actual[1] ), true, 'returns expected value' );
394+
t.deepEqual( getShape( actual[0] ), [ 2, 0 ], 'returns expected value' );
395+
t.deepEqual( getShape( actual[1] ), [ 2, 0 ], 'returns expected value' );
396+
t.deepEqual( ndarray2array( actual[0] ), [], 'returns expected value' );
397+
t.deepEqual( ndarray2array( actual[1] ), [], 'returns expected value' );
398+
399+
sh = [ 0, 4 ];
400+
x = new ndarray( 'float64', buf, sh, st, o, ord );
401+
402+
actual = pop( x, 0, false );
403+
404+
t.strictEqual( isndarrayLike( actual[0] ), true, 'returns expected value' );
405+
t.strictEqual( isndarrayLike( actual[1] ), true, 'returns expected value' );
406+
t.strictEqual( isReadOnly( actual[0] ), true, 'returns expected value' );
407+
t.strictEqual( isReadOnly( actual[1] ), true, 'returns expected value' );
408+
t.deepEqual( getShape( actual[0] ), [ 0, 4 ], 'returns expected value' );
409+
t.deepEqual( getShape( actual[1] ), [ 0, 4 ], 'returns expected value' );
410+
t.deepEqual( ndarray2array( actual[0] ), [], 'returns expected value' );
411+
t.deepEqual( ndarray2array( actual[1] ), [], 'returns expected value' );
412+
413+
actual = pop( x, 1, false );
414+
415+
t.strictEqual( isndarrayLike( actual[0] ), true, 'returns expected value' );
416+
t.strictEqual( isndarrayLike( actual[1] ), true, 'returns expected value' );
417+
t.strictEqual( isReadOnly( actual[0] ), true, 'returns expected value' );
418+
t.strictEqual( isReadOnly( actual[1] ), true, 'returns expected value' );
419+
t.deepEqual( getShape( actual[0] ), [ 0, 3 ], 'returns expected value' );
420+
t.deepEqual( getShape( actual[1] ), [ 0, 1 ], 'returns expected value' );
421+
t.deepEqual( ndarray2array( actual[0] ), [], 'returns expected value' );
422+
t.deepEqual( ndarray2array( actual[1] ), [], 'returns expected value' );
423+
424+
t.end();
425+
});

0 commit comments

Comments
 (0)