diff options
Diffstat (limited to 'testsuite.cpp')
-rw-r--r-- | testsuite.cpp | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/testsuite.cpp b/testsuite.cpp index cc51cfa..eeed1c6 100644 --- a/testsuite.cpp +++ b/testsuite.cpp @@ -251,7 +251,7 @@ public: } }; -BOOST_AUTO_TEST_CASE(fft) +BOOST_AUTO_TEST_CASE(performance) { std::vector<std::complex<double>> v(4096, 0); @@ -286,3 +286,43 @@ BOOST_AUTO_TEST_CASE(fft) // TODO: // -0.5 <= deviation <= 0.5 + +BOOST_AUTO_TEST_CASE(fft_2) +{ + std::vector<std::complex<double>> v{{1, 0}, {0, 0}}; + RIT::FFT fft{2}; + auto fft_result = fft(v); + + BOOST_REQUIRE_EQUAL(fft_result.size(), 2); + BOOST_REQUIRE_EQUAL(fft_result[0], (std::complex<double>{1.0, 0.0})); + BOOST_REQUIRE_EQUAL(fft_result[1], (std::complex<double>{1.0, 0.0})); + + RIT::IFFT ifft{2}; + auto ifft_result = ifft(fft_result); + + BOOST_REQUIRE_EQUAL(ifft_result.size(), 2); + BOOST_REQUIRE_EQUAL(ifft_result[0], (std::complex<double>{1.0, 0.0})); + BOOST_REQUIRE_EQUAL(ifft_result[1], (std::complex<double>{0.0, 0.0})); +} + +BOOST_AUTO_TEST_CASE(fft_4) +{ + std::vector<std::complex<double>> v{{1, 0}, {0, 0}, {0, 0}, {0, 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>{1.0, 0.0})); + BOOST_REQUIRE_EQUAL(fft_result[1], (std::complex<double>{1.0, 0.0})); + BOOST_REQUIRE_EQUAL(fft_result[2], (std::complex<double>{1.0, 0.0})); + BOOST_REQUIRE_EQUAL(fft_result[3], (std::complex<double>{1.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>{0.0, 0.0})); + 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})); +} |