diff --git a/examples/1d.js b/examples/1d.js index 7c0eab6..5de00b0 100644 --- a/examples/1d.js +++ b/examples/1d.js @@ -25,10 +25,10 @@ var E = require( '@stdlib/slice-multi' ); var toArray = require( '@stdlib/ndarray-to-array' ); var FancyArray = require( './../lib' ); -var buffer = [ 1, 2, 3, 4, 5, 6 ]; +var buffer = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 ]; var shape = [ 6 ]; -var strides = [ 1 ]; -var offset = 0; +var strides = [ 2 ]; +var offset = 2; var x = new FancyArray( 'generic', buffer, shape, strides, offset, 'row-major' ); // returns @@ -41,12 +41,12 @@ console.log( 'ndims: %d', ndims ); // Retrieve an ndarray element: var v = x.get( 2 ); console.log( 'x[2] = %d', v ); -// => 'x[2] = 3' +// => 'x[2] = 7' // Set an ndarray element: -x.set( 2, 10 ); +x.set( 2, 100 ); console.log( 'x[2] = %d', x.get( 2 ) ); -// => 'x[2] = 10' +// => 'x[2] = 100' // Create an alias for `undefined` for more concise slicing expressions: var _ = void 0; @@ -58,19 +58,19 @@ var s = E( S(0,_,2) ); // Use a multi-slice to create a view on the original ndarray: var y1 = x[ s ]; console.log( toArray( y1 ) ); -// => [ 1, 10, 5 ] +// => [ 3, 100, 11 ] // Use a slice to create a view on the original ndarray: var y2 = x[ s.data[0] ]; console.log( toArray( y2 ) ); -// => [ 1, 10, 5 ] +// => [ 3, 100, 11 ] // Use alternative syntax: var y3 = x[ [ S(0,_,2) ] ]; console.log( toArray( y3 ) ); -// => [ 1, 10, 5 ] +// => [ 3, 100, 11 ] // Use alternative syntax: var y4 = x[ '::-2' ]; console.log( toArray( y4 ) ); -// => [ 6, 4, 2 ] +// => [ 13, 9, 5 ] diff --git a/test/dist/test.js b/test/dist/test.js new file mode 100644 index 0000000..47ea07a --- /dev/null +++ b/test/dist/test.js @@ -0,0 +1,215 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2023 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var instanceOf = require( '@stdlib/assert-instance-of' ); +var Complex64Array = require( '@stdlib/array-complex64' ); +var FancyArray = require( './../../dist' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof FancyArray, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function is a constructor', function test( t ) { + var strides; + var buffer; + var offset; + var dtype; + var order; + var shape; + var arr; + + dtype = 'generic'; + buffer = [ 1.0, 2.0, 3.0, 4.0 ]; + shape = [ 2, 2 ]; + order = 'row-major'; + strides = [ 2, 1 ]; + offset = 0; + + arr = new FancyArray( dtype, buffer, shape, strides, offset, order ); + + t.strictEqual( instanceOf( arr, FancyArray ), true, 'returns an instance' ); + t.end(); +}); + +tape( 'the function is a constructor (complex dtype)', function test( t ) { + var strides; + var buffer; + var offset; + var dtype; + var order; + var shape; + var arr; + + dtype = 'complex64'; + buffer = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + shape = [ 2, 2 ]; + order = 'row-major'; + strides = [ 2, 1 ]; + offset = 0; + + arr = new FancyArray( dtype, buffer, shape, strides, offset, order ); + + t.strictEqual( instanceOf( arr, FancyArray ), true, 'returns an instance' ); + t.end(); +}); + +tape( 'the function is a constructor (0d)', function test( t ) { + var strides; + var buffer; + var offset; + var dtype; + var order; + var shape; + var arr; + + dtype = 'generic'; + buffer = [ 1.0 ]; + shape = []; + order = 'row-major'; + strides = [ 0 ]; + offset = 0; + + arr = new FancyArray( dtype, buffer, shape, strides, offset, order ); + + t.strictEqual( instanceOf( arr, FancyArray ), true, 'returns an instance' ); + t.end(); +}); + +tape( 'the function is a constructor (0d; complex dtype)', function test( t ) { + var strides; + var buffer; + var offset; + var dtype; + var order; + var shape; + var arr; + + dtype = 'complex64'; + buffer = new Complex64Array( [ 1.0, 1.0 ] ); + shape = []; + order = 'row-major'; + strides = [ 0 ]; + offset = 0; + + arr = new FancyArray( dtype, buffer, shape, strides, offset, order ); + + t.strictEqual( instanceOf( arr, FancyArray ), true, 'returns an instance' ); + t.end(); +}); + +tape( 'the function is a constructor (options)', function test( t ) { + var strides; + var buffer; + var offset; + var dtype; + var order; + var shape; + var arr; + + dtype = 'generic'; + buffer = [ 1.0, 2.0, 3.0, 4.0 ]; + shape = [ 2, 2 ]; + order = 'row-major'; + strides = [ 2, 1 ]; + offset = 0; + + arr = new FancyArray( dtype, buffer, shape, strides, offset, order, {} ); + + t.strictEqual( instanceOf( arr, FancyArray ), true, 'returns an instance' ); + t.end(); +}); + +tape( 'the function is a constructor (0d; options)', function test( t ) { + var strides; + var buffer; + var offset; + var dtype; + var order; + var shape; + var arr; + + dtype = 'generic'; + buffer = [ 1.0 ]; + shape = []; + order = 'row-major'; + strides = [ 0 ]; + offset = 0; + + arr = new FancyArray( dtype, buffer, shape, strides, offset, order, {} ); + + t.strictEqual( instanceOf( arr, FancyArray ), true, 'returns an instance' ); + t.end(); +}); + +tape( 'the constructor does not require the `new` keyword', function test( t ) { + var ndarray; + var strides; + var buffer; + var offset; + var dtype; + var order; + var shape; + var arr; + + dtype = 'generic'; + buffer = [ 1.0, 2.0, 3.0, 4.0 ]; + shape = [ 2, 2 ]; + order = 'row-major'; + strides = [ 2, 1 ]; + offset = 0; + + ndarray = FancyArray; + arr = ndarray( dtype, buffer, shape, strides, offset, order ); + + t.strictEqual( instanceOf( arr, FancyArray ), true, 'returns an instance' ); + t.end(); +}); + +tape( 'the constructor does not require the `new` keyword (options)', function test( t ) { + var ndarray; + var strides; + var buffer; + var offset; + var dtype; + var order; + var shape; + var arr; + + dtype = 'generic'; + buffer = [ 1.0, 2.0, 3.0, 4.0 ]; + shape = [ 2, 2 ]; + order = 'row-major'; + strides = [ 2, 1 ]; + offset = 0; + + ndarray = FancyArray; + arr = ndarray( dtype, buffer, shape, strides, offset, order, {} ); + + t.strictEqual( instanceOf( arr, FancyArray ), true, 'returns an instance' ); + t.end(); +});