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}
This commit is contained in:
Alessio Bazzica
2019-03-25 09:56:30 +01:00
committed by Commit Bot
parent 9debe5aee4
commit 9b1288c8ec

View File

@ -122,17 +122,42 @@ TEST(PffftTest, CreateWrapperWithValidSize) {
}
#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.