Chris@25: require('../lib/fft_image') Chris@25: require('./test_helper') Chris@25: Chris@25: var assert = require('assert'), Chris@25: fft_lib = require('../lib/fft'), Chris@25: complex_array_lib = require('../lib/complex_array'), Chris@25: ComplexArray = complex_array_lib.ComplexArray Chris@25: Chris@25: function randomImageData(n) { Chris@25: var array = new Uint8ClampedArray(n), Chris@25: i Chris@25: Chris@25: for(i = 0; i < n; i++) { Chris@25: array[i] = Math.random() * 128 Chris@25: } Chris@25: return array Chris@25: } Chris@25: Chris@25: function mergeRGBA(r, g, b, a) { Chris@25: var n = r.length, Chris@25: output = new Uint8ClampedArray(4 * n), Chris@25: i Chris@25: Chris@25: for(i = 0; i < n; i++) { Chris@25: output[4 * i ] = r[i] Chris@25: output[4 * i + 1] = g[i] Chris@25: output[4 * i + 2] = b[i] Chris@25: output[4 * i + 3] = a[i] Chris@25: } Chris@25: return output Chris@25: } Chris@25: Chris@25: function mergeComplexRGBA(r, g, b, a) { Chris@25: var n = r.length, Chris@25: output = new ComplexArray(4 * n), Chris@25: i Chris@25: Chris@25: for(i = 0; i < n; i++) { Chris@25: output.real[4 * i ] = r.real[i] Chris@25: output.imag[4 * i ] = r.imag[i] Chris@25: output.real[4 * i + 1] = g.real[i] Chris@25: output.imag[4 * i + 1] = g.imag[i] Chris@25: output.real[4 * i + 2] = b.real[i] Chris@25: output.imag[4 * i + 2] = b.imag[i] Chris@25: output.real[4 * i + 3] = a.real[i] Chris@25: output.imag[4 * i + 3] = a.imag[i] Chris@25: } Chris@25: Chris@25: return output Chris@25: } Chris@25: Chris@25: describe('fft', function() { Chris@25: describe('#FFTImageDataRGBA()', function() { Chris@25: it('transforms independent channels', function() { Chris@25: var n = 48, Chris@25: r = randomImageData(n), Chris@25: g = randomImageData(n), Chris@25: b = randomImageData(n), Chris@25: a = new Uint8ClampedArray(n), Chris@25: data = mergeRGBA(r, g, b, a), Chris@25: expected = mergeComplexRGBA(DFT(r), DFT(g), DFT(b), DFT(a)), Chris@25: output = fft_lib.FFTImageDataRGBA(data, n, 1) Chris@25: Chris@25: assertComplexArraysAlmostEqual(expected, output) Chris@25: }) Chris@25: Chris@25: xit('transforms in 2D') Chris@25: }) Chris@25: }) Chris@25: