oramics/dsp-kit

View on GitHub
packages/array/test/test.js

Summary

Maintainability
C
1 day
Test Coverage
/* eslint-disable comma-spacing */
const test = require('tst')
const assert = require('assert')
const array = require('..')

const from = (x) => Float64Array.from(x || [])

test('zeros', () => {
  const zeros = array.zeros(10)
  assert.equal(zeros.length, 10)
  assert.deepEqual(zeros, from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]))
})

test('add', () => {
  const ones = array.fill(10, (x) => 1)
  var result = array.add(5, ones, ones)
  assert.deepEqual(result, [2,2,2,2,2])
  assert.deepEqual(ones, [1,1,1,1,1,1,1,1,1,1])
  array.add(5, ones, ones, ones)
  assert.deepEqual(ones, [2,2,2,2,2,1,1,1,1,1])
})

test('substr', () => {
  const a = array.fill(5, (x) => 5)
  const b = array.fill(5, (x) => x)
  assert.deepEqual(array.substr(5, a, b), [5,4,3,2,1])
  array.substr(3, a, b, a)
  assert.deepEqual(a, [5,4,3,5,5])
})

test('mult', () => {
  var signal = array.fill(10, (n) => 2)
  var result = array.mult(5, signal, signal)
  assert.deepEqual(result, [4, 4, 4, 4, 4])
  assert.deepEqual(signal, [2,2,2,2,2,2,2,2,2,2])
  array.mult(5, signal, signal, signal)
  assert.deepEqual(signal, [4,4,4,4,4,2,2,2,2,2])
})

test('concat', () => {
  const ones = array.fill(5, (x) => 1)
  const twos = array.fill(5, (x) => 2)
  assert.deepEqual(array.concat(ones, twos), from([1, 1, 1, 1, 1, 2, 2, 2, 2, 2]))
})

test('fill', function () {
  const zeros = array.fill(100, (x) => 0)
  assert.deepStrictEqual(zeros, array.zeros(100))
  const ones = array.fill(10, (x) => 1)
  assert.deepEqual(ones, from([1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))
  const indices = array.fill(10, (n, N) => n)
  assert.deepEqual(indices, from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
  const lens = array.fill(10, (n, N) => N)
  assert.deepEqual(lens, from([10, 10, 10, 10, 10, 10, 10, 10, 10, 10]))
})

test('generate in-place', function () {
  const PI = Math.PI
  const sine32 = new Float32Array(10)
  array.fill(10, (n, N) => Math.sin(2 * PI * n / (N - 1)), sine32)
  assert.deepEqual(sine32, [
    0, 0.6427876353263855, 0.9848077297210693, 0.8660253882408142, 0.3420201539993286, -0.3420201539993286, -0.8660253882408142, -0.9848077297210693, -0.6427876353263855, -2.4492937051703357e-16
  ])
  const sine64 = new Float64Array(10)
  array.fill(10, (n, N) => Math.sin(2 * PI * n / (N - 1)), sine64)
  assert.deepEqual(sine64, [
    0, 0.6427876096865393, 0.984807753012208, 0.8660254037844387, 0.3420201433256689, -0.34202014332566866, -0.8660254037844385, -0.9848077530122081, -0.6427876096865396, -2.4492935982947064e-16
  ])
})

test('round', function () {
  const signal = array.fill(10, (n, N) => Math.sin(2 * Math.PI * n / (N - 1)))
  assert.deepEqual(array.round(signal, 2), from([0,0.64,0.98,0.87,0.34,-0.34,-0.87,-0.98,-0.64,0]))
  assert.deepEqual(array.round(signal, 3), from([0,0.643,0.985,0.866,0.342,-0.342,-0.866,-0.985,-0.643,0]))
})

test('testAll', function () {
  const signal = [1, 1, 1, 2, 2, 2]
  assert(array.testAll(3, (x) => x === 1, signal))
  assert(!array.testAll(4, (x) => x === 1, signal))
})