Chris@25
|
1 require('../lib/fft_image')
|
Chris@25
|
2 require('./test_helper')
|
Chris@25
|
3
|
Chris@25
|
4 var assert = require('assert'),
|
Chris@25
|
5 fft_lib = require('../lib/fft'),
|
Chris@25
|
6 complex_array_lib = require('../lib/complex_array'),
|
Chris@25
|
7 ComplexArray = complex_array_lib.ComplexArray
|
Chris@25
|
8
|
Chris@25
|
9 function randomImageData(n) {
|
Chris@25
|
10 var array = new Uint8ClampedArray(n),
|
Chris@25
|
11 i
|
Chris@25
|
12
|
Chris@25
|
13 for(i = 0; i < n; i++) {
|
Chris@25
|
14 array[i] = Math.random() * 128
|
Chris@25
|
15 }
|
Chris@25
|
16 return array
|
Chris@25
|
17 }
|
Chris@25
|
18
|
Chris@25
|
19 function mergeRGBA(r, g, b, a) {
|
Chris@25
|
20 var n = r.length,
|
Chris@25
|
21 output = new Uint8ClampedArray(4 * n),
|
Chris@25
|
22 i
|
Chris@25
|
23
|
Chris@25
|
24 for(i = 0; i < n; i++) {
|
Chris@25
|
25 output[4 * i ] = r[i]
|
Chris@25
|
26 output[4 * i + 1] = g[i]
|
Chris@25
|
27 output[4 * i + 2] = b[i]
|
Chris@25
|
28 output[4 * i + 3] = a[i]
|
Chris@25
|
29 }
|
Chris@25
|
30 return output
|
Chris@25
|
31 }
|
Chris@25
|
32
|
Chris@25
|
33 function mergeComplexRGBA(r, g, b, a) {
|
Chris@25
|
34 var n = r.length,
|
Chris@25
|
35 output = new ComplexArray(4 * n),
|
Chris@25
|
36 i
|
Chris@25
|
37
|
Chris@25
|
38 for(i = 0; i < n; i++) {
|
Chris@25
|
39 output.real[4 * i ] = r.real[i]
|
Chris@25
|
40 output.imag[4 * i ] = r.imag[i]
|
Chris@25
|
41 output.real[4 * i + 1] = g.real[i]
|
Chris@25
|
42 output.imag[4 * i + 1] = g.imag[i]
|
Chris@25
|
43 output.real[4 * i + 2] = b.real[i]
|
Chris@25
|
44 output.imag[4 * i + 2] = b.imag[i]
|
Chris@25
|
45 output.real[4 * i + 3] = a.real[i]
|
Chris@25
|
46 output.imag[4 * i + 3] = a.imag[i]
|
Chris@25
|
47 }
|
Chris@25
|
48
|
Chris@25
|
49 return output
|
Chris@25
|
50 }
|
Chris@25
|
51
|
Chris@25
|
52 describe('fft', function() {
|
Chris@25
|
53 describe('#FFTImageDataRGBA()', function() {
|
Chris@25
|
54 it('transforms independent channels', function() {
|
Chris@25
|
55 var n = 48,
|
Chris@25
|
56 r = randomImageData(n),
|
Chris@25
|
57 g = randomImageData(n),
|
Chris@25
|
58 b = randomImageData(n),
|
Chris@25
|
59 a = new Uint8ClampedArray(n),
|
Chris@25
|
60 data = mergeRGBA(r, g, b, a),
|
Chris@25
|
61 expected = mergeComplexRGBA(DFT(r), DFT(g), DFT(b), DFT(a)),
|
Chris@25
|
62 output = fft_lib.FFTImageDataRGBA(data, n, 1)
|
Chris@25
|
63
|
Chris@25
|
64 assertComplexArraysAlmostEqual(expected, output)
|
Chris@25
|
65 })
|
Chris@25
|
66
|
Chris@25
|
67 xit('transforms in 2D')
|
Chris@25
|
68 })
|
Chris@25
|
69 })
|
Chris@25
|
70
|