summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRoland Reichwein <mail@reichwein.it>2023-12-29 17:21:16 +0100
committerRoland Reichwein <mail@reichwein.it>2023-12-29 17:21:16 +0100
commit8f1d7d3000647c049cca7c235d273637cae19885 (patch)
tree784daa56a1f22cded7671787f4782924f2d91b31
parentaf22f78fb470225d276e8903b327bd57732d13a9 (diff)
Added tests
-rw-r--r--testsuite.cpp46
1 files changed, 45 insertions, 1 deletions
diff --git a/testsuite.cpp b/testsuite.cpp
index eeed1c6..a846883 100644
--- a/testsuite.cpp
+++ b/testsuite.cpp
@@ -305,7 +305,7 @@ BOOST_AUTO_TEST_CASE(fft_2)
BOOST_REQUIRE_EQUAL(ifft_result[1], (std::complex<double>{0.0, 0.0}));
}
-BOOST_AUTO_TEST_CASE(fft_4)
+BOOST_AUTO_TEST_CASE(fft_4a)
{
std::vector<std::complex<double>> v{{1, 0}, {0, 0}, {0, 0}, {0, 0}};
RIT::FFT fft{4};
@@ -326,3 +326,47 @@ BOOST_AUTO_TEST_CASE(fft_4)
BOOST_REQUIRE_EQUAL(ifft_result[2], (std::complex<double>{0.0, 0.0}));
BOOST_REQUIRE_EQUAL(ifft_result[3], (std::complex<double>{0.0, 0.0}));
}
+
+BOOST_AUTO_TEST_CASE(fft_4b)
+{
+ std::vector<std::complex<double>> v{{1, 0}, {-1, 0}, {1, 0}, {-1, 0}};
+ RIT::FFT fft{4};
+ auto fft_result = fft(v);
+
+ BOOST_REQUIRE_EQUAL(fft_result.size(), 4);
+ BOOST_REQUIRE_EQUAL(fft_result[0], (std::complex<double>{0.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(fft_result[1], (std::complex<double>{0.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(fft_result[2], (std::complex<double>{4.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(fft_result[3], (std::complex<double>{0.0, 0.0}));
+
+ RIT::IFFT ifft{4};
+ auto ifft_result = ifft(fft_result);
+
+ BOOST_REQUIRE_EQUAL(ifft_result.size(), 4);
+ BOOST_REQUIRE_EQUAL(ifft_result[0], (std::complex<double>{1.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(ifft_result[1], (std::complex<double>{-1.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(ifft_result[2], (std::complex<double>{1.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(ifft_result[3], (std::complex<double>{-1.0, 0.0}));
+}
+
+BOOST_AUTO_TEST_CASE(fft_4c)
+{
+ std::vector<std::complex<double>> v{{-1, 0}, {1, 0}, {-1, 0}, {1, 0}};
+ RIT::FFT fft{4};
+ auto fft_result = fft(v);
+
+ BOOST_REQUIRE_EQUAL(fft_result.size(), 4);
+ BOOST_REQUIRE_EQUAL(fft_result[0], (std::complex<double>{0.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(fft_result[1], (std::complex<double>{0.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(fft_result[2], (std::complex<double>{-4.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(fft_result[3], (std::complex<double>{0.0, 0.0}));
+
+ RIT::IFFT ifft{4};
+ auto ifft_result = ifft(fft_result);
+
+ BOOST_REQUIRE_EQUAL(ifft_result.size(), 4);
+ BOOST_REQUIRE_EQUAL(ifft_result[0], (std::complex<double>{-1.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(ifft_result[1], (std::complex<double>{1.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(ifft_result[2], (std::complex<double>{-1.0, 0.0}));
+ BOOST_REQUIRE_EQUAL(ifft_result[3], (std::complex<double>{1.0, 0.0}));
+}