PFFFT APM wrapper: unit test fix.
This CL replaces death tests placed inside a loop with a parametric test.
A better option is to mock Pffft::IsValidFftSize and test CreatePffftWrapper
when the former returns false. However, that would require to define an
interface for the PFFFT wrapper.
Bug: webrtc:10426
Change-Id: I3c49f1b271c8bf0099a4846014bef021676ef3e0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/128862
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27260}
diff --git a/modules/audio_processing/utility/pffft_wrapper_unittest.cc b/modules/audio_processing/utility/pffft_wrapper_unittest.cc
index 8ec2208..70c5ce5 100644
--- a/modules/audio_processing/utility/pffft_wrapper_unittest.cc
+++ b/modules/audio_processing/utility/pffft_wrapper_unittest.cc
@@ -122,17 +122,42 @@
}
#if !defined(NDEBUG) && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
-TEST(PffftTest, DoNotCreateWrapperWithInvalidSize) {
- for (size_t fft_size = 0; fft_size < kMaxValidSizeCheck; ++fft_size) {
- SCOPED_TRACE(fft_size);
- if (!Pffft::IsValidFftSize(fft_size, Pffft::FftType::kReal)) {
- EXPECT_DEATH(CreatePffftWrapper(fft_size, Pffft::FftType::kReal), "");
- }
- if (!Pffft::IsValidFftSize(fft_size, Pffft::FftType::kComplex)) {
- EXPECT_DEATH(CreatePffftWrapper(fft_size, Pffft::FftType::kComplex), "");
- }
- }
+
+class PffftInvalidSizeTest : public testing::Test,
+ public ::testing::WithParamInterface<size_t> {};
+
+TEST_P(PffftInvalidSizeTest, DoNotCreateRealWrapper) {
+ size_t fft_size = GetParam();
+ ASSERT_FALSE(Pffft::IsValidFftSize(fft_size, Pffft::FftType::kReal));
+ EXPECT_DEATH(CreatePffftWrapper(fft_size, Pffft::FftType::kReal), "");
}
+
+TEST_P(PffftInvalidSizeTest, DoNotCreateComplexWrapper) {
+ size_t fft_size = GetParam();
+ ASSERT_FALSE(Pffft::IsValidFftSize(fft_size, Pffft::FftType::kComplex));
+ EXPECT_DEATH(CreatePffftWrapper(fft_size, Pffft::FftType::kComplex), "");
+}
+
+INSTANTIATE_TEST_SUITE_P(PffftTest,
+ PffftInvalidSizeTest,
+ ::testing::Values(17,
+ 33,
+ 65,
+ 97,
+ 129,
+ 161,
+ 193,
+ 257,
+ 289,
+ 385,
+ 481,
+ 513,
+ 577,
+ 641,
+ 801,
+ 865,
+ 1025));
+
#endif
// TODO(https://crbug.com/webrtc/9577): Enable once SIMD is always enabled.