UNPKG

array-grid

Version:

Two-dimensional implementation of ndarray to avoid dynamic code generation eval.

172 lines (124 loc) 3.2 kB
var test = require('tape') var ArrayGrid = require('../') // some tests from https://github.com/mikolalysenko/ndarray/test/test.js test("ndarray", function(t) { var p = ArrayGrid(new Float32Array([1,2,3,4]), [2,2]) // t.equals(p.dtype, "float32") // fail t.equals(p.shape.length, 2) t.equals(p.shape[0], 2) t.equals(p.shape[1], 2) t.equals(p.stride[0], 2) t.equals(p.stride[1], 1) t.end() }) test("place and lookup", function(t) { var grid = ArrayGrid([1,2,3,4], [4,4], [1,4]) grid.place(1, 2, ArrayGrid([5,6,7,8], [2,2], [1, 2])) t.equals(grid.get(0,0), 1) t.equals(grid.get(3,0), 4) t.equals(grid.get(1,2), 5) t.equals(grid.get(2,2), 6) t.equals(grid.get(1,3), 7) t.equals(grid.get(2,3), 8) t.same(grid.lookup(2), [1,0]) t.same(grid.lookup(3), [2,0]) t.same(grid.lookup(5), [1,2]) t.same(grid.lookup(7), [1,3]) t.same(grid.lookup(8), [2,3]) t.end() }) test("place negative stride", function(t) { var grid = ArrayGrid([], [4,4], [1,4]) var inner = ArrayGrid([5,6,7,8], [2,2], [1, -2]) grid.place(1, 2, inner) t.equals(grid.get(1,3), 5) t.equals(grid.get(2,3), 6) t.equals(grid.get(1,2), 7) t.equals(grid.get(2,2), 8) t.end() }) test("index", function(t) { var p = ArrayGrid(new Float32Array([1,2,3,4]), [2,2]) t.equals(p.index(0,0), 0) t.equals(p.index(0,1), 1) t.equals(p.index(1,0), 2) t.equals(p.index(1,1), 3) t.end() }) test("get/set", function(t) { var p = ArrayGrid(new Float32Array([1,2,3,4]), [2,2]) t.equal(p.get(0,1), 2) t.equal(p.get(1,0), 3) t.equal(p.get(1,1), 4) p.set(0,1, 5) p.set(1,0, 6) p.set(1,1, 7) t.equal(p.data[1], 5) t.equal(p.data[2], 6) t.equal(p.data[3], 7) t.equal(p.get(0,1), 5) t.equal(p.get(1,0), 6) t.equal(p.get(1,1), 7) t.end() }) test("get/set - negative stride", function(t) { var p = ArrayGrid([1,2,3,4,5,6], [2,3], [1, -2]) // 5 6 // 3 4 // 1 2 t.equal(p.get(0,1), 3) t.equal(p.get(1,0), 6) t.equal(p.get(1,1), 4) p.set(0,1, 7) p.set(1,0, 8) p.set(1,1, 9) t.equal(p.data[2], 7) t.equal(p.data[5], 8) t.equal(p.data[3], 9) t.equal(p.get(0,1), 7) t.equal(p.get(1,0), 8) t.equal(p.get(1,1), 9) var r = ArrayGrid([1,2,3,4,5,6], [3,2], [-1, -3]) // 6 5 4 // 3 2 1 t.equal(r.get(0,1), 3) t.equal(r.get(1,0), 5) t.equal(r.get(1,1), 2) var r = ArrayGrid([1,2,3,4,5,6], [2,3], [-1, -2]) // 6 5 // 4 3 // 2 1 t.equal(r.get(0,1), 4) t.equal(r.get(1,0), 5) t.equal(r.get(1,1), 3) t.end() }) test("get/set Array", function(t) { var p = ArrayGrid([1,2,3,4], [2,2]) t.equal(p.get(0,1), 2) t.equal(p.get(1,0), 3) t.equal(p.get(1,1), 4) p.set(0,1, 'A') p.set(1,0, 'B') p.set(1,1, 'C') t.equal(p.data[1], 'A') t.equal(p.data[2], 'B') t.equal(p.data[3], 'C') t.equal(p.get(0,1), 'A') t.equal(p.get(1,0), 'B') t.equal(p.get(1,1), 'C') t.end() }) test("empty Array", function(t) { var p = ArrayGrid([], [2,2]) p.set(0,1, 'A') p.set(1,0, 'B') p.set(1,1, 'C') t.equal(p.data[1], 'A') t.equal(p.data[2], 'B') t.equal(p.data[3], 'C') t.equal(p.get(0,1), 'A') t.equal(p.get(1,0), 'B') t.equal(p.get(1,1), 'C') t.end() })