- Notifications
You must be signed in to change notification settings - Fork 19.9k
/
Copy pathFFTTest.java
138 lines (121 loc) · 4.55 KB
/
FFTTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
packagecom.thealgorithms.maths;
importstaticorg.junit.jupiter.api.Assertions.assertEquals;
importstaticorg.junit.jupiter.api.Assertions.assertNotEquals;
importjava.util.ArrayList;
importorg.junit.jupiter.api.Test;
classFFTTest {
// Testing the simple function getReal
@Test
voidgetRealtest() {
FFT.Complexcomplex = newFFT.Complex(1.0, 1.0);
assertEquals(1.0, complex.getReal());
}
// Testing the simple function getImaginary
@Test
voidgetImaginaryTest() {
FFT.Complexcomplex = newFFT.Complex();
assertEquals(0.0, complex.getImaginary());
}
// Testing the function add, assertEqual test
@Test
voidaddTest() {
FFT.Complexcomplex1 = newFFT.Complex(1.0, 1.0);
FFT.Complexcomplex2 = newFFT.Complex(2.0, 2.0);
doubleadd = complex1.add(complex2).getReal();
assertEquals(3.0, add);
}
// Testing the function add, assertNotEqual test
@Test
voidaddFalseTest() {
FFT.Complexcomplex1 = newFFT.Complex(1.0, 1.0);
FFT.Complexcomplex2 = newFFT.Complex(2.0, 2.0);
doubleadd = complex1.add(complex2).getReal();
assertNotEquals(2.0, add);
}
// Testing the function subtract, assertEqual test
@Test
voidsubtractTest() {
FFT.Complexcomplex1 = newFFT.Complex(2.0, 2.0);
FFT.Complexcomplex2 = newFFT.Complex(1.0, 1.0);
doublesub = complex1.subtract(complex2).getReal();
assertEquals(1.0, sub);
}
// Testing the function multiply complex, assertEqual test
@Test
voidmultiplyWithComplexTest() {
FFT.Complexcomplex1 = newFFT.Complex(2.0, 2.0);
FFT.Complexcomplex2 = newFFT.Complex(1.0, 1.0);
doublemultiReal = complex1.multiply(complex2).getReal();
doublemultiImg = complex1.multiply(complex2).getImaginary();
assertEquals(0.0, multiReal);
assertEquals(4.0, multiImg);
}
// Testing the function multiply scalar, assertEqual test
@Test
voidmultiplyWithScalarTest() {
FFT.Complexcomplex1 = newFFT.Complex(2.0, 2.0);
doublemultiReal = complex1.multiply(2).getReal();
doublemultiImg = complex1.multiply(3).getImaginary();
assertEquals(4.0, multiReal);
assertEquals(6.0, multiImg);
}
// Testing the function conjugate, assertEqual test
@Test
voidconjugateTest() {
FFT.Complexcomplex1 = newFFT.Complex(2.0, 2.0);
doubleconReal = complex1.conjugate().getReal();
doubleconImg = complex1.conjugate().getImaginary();
assertEquals(2.0, conReal);
assertEquals(-2.0, conImg);
}
// Testing the function abs, assertEqual test
@Test
voidabs() {
FFT.Complexcomplex1 = newFFT.Complex(2.0, 3.0);
doubleabs = complex1.abs();
assertEquals(Math.sqrt(13), abs);
}
// Testing the function divide complex, assertEqual test.
@Test
voiddivideWithComplexTest() {
FFT.Complexcomplex1 = newFFT.Complex(2.0, 2.0);
FFT.Complexcomplex2 = newFFT.Complex(1.0, 2.0);
doubledivReal = complex1.divide(complex2).getReal();
doubledivImg = complex1.divide(complex2).getImaginary();
assertEquals(1.2, divReal);
assertEquals(-0.4, divImg);
}
// Testing the function divide scalar, assertEqual test.
@Test
voiddivideWithScalarTest() {
FFT.Complexcomplex1 = newFFT.Complex(2.0, 2.0);
doubledivReal = complex1.divide(2).getReal();
doubledivImg = complex1.divide(2).getImaginary();
assertEquals(1, divReal);
assertEquals(1, divImg);
}
// Testing the function fft, assertEqual test.
// https://scistatcalc.blogspot.com/2013/12/fft-calculator.html used this link to
// ensure the result
@Test
voidfft() {
ArrayList<FFT.Complex> arr = newArrayList<FFT.Complex>();
FFT.Complexcomplex1 = newFFT.Complex(2.0, 2.0);
FFT.Complexcomplex2 = newFFT.Complex(1.0, 3.0);
FFT.Complexcomplex3 = newFFT.Complex(3.0, 1.0);
FFT.Complexcomplex4 = newFFT.Complex(2.0, 2.0);
arr.add(complex1);
arr.add(complex2);
arr.add(complex3);
arr.add(complex4);
arr = FFT.fft(arr, false);
doublerealV1 = arr.get(0).getReal();
doublerealV2 = arr.get(2).getReal();
doubleimgV1 = arr.get(0).getImaginary();
doubleimgV2 = arr.get(2).getImaginary();
assertEquals(8.0, realV1);
assertEquals(2.0, realV2);
assertEquals(8.0, imgV1);
assertEquals(-2.0, imgV2);
}
}