Chromium Code Reviews| Index: media/audio/sounds/wav_audio_handler_unittest.cc |
| diff --git a/media/audio/sounds/wav_audio_handler_unittest.cc b/media/audio/sounds/wav_audio_handler_unittest.cc |
| index d4ec83a5838243c5df7d488a7146780a0f8d29b4..1a5c767ee2d56141f28c353514a030d5b842aa3c 100644 |
| --- a/media/audio/sounds/wav_audio_handler_unittest.cc |
| +++ b/media/audio/sounds/wav_audio_handler_unittest.cc |
| @@ -12,10 +12,40 @@ |
| #include "testing/gtest/include/gtest/gtest.h" |
| namespace media { |
| +namespace { |
| +const size_t kWavHeaderSize = 12; |
| +const size_t kFormatHeaderSize = 8; |
| + |
| +const size_t kChannelIndex = kWavHeaderSize + kFormatHeaderSize + 2; |
| +const size_t kBitsPerSampleIndex = kWavHeaderSize + kFormatHeaderSize + 14; |
| +const size_t kSampleRateIndex = kWavHeaderSize + kFormatHeaderSize + 4; |
| + |
| +void CheckStateIsInvalid(const WavAudioHandler& handler) { |
| + EXPECT_FALSE(handler.is_valid()); |
| + EXPECT_EQ(base::StringPiece(), handler.data()); |
| + EXPECT_EQ(0u, handler.num_channels()); |
| + EXPECT_EQ(0u, handler.sample_rate()); |
| + EXPECT_EQ(0u, handler.bits_per_sample()); |
| + EXPECT_EQ(0u, handler.total_frames()); |
| + |
| + // CopyTo should always return false. |
| + auto bus = media::AudioBus::Create(2, 1024); |
| + size_t written = 0u; |
| + EXPECT_FALSE(handler.CopyTo(bus.get(), 0u, &written)); |
| + |
| + // AtEnd should always return true. |
| + EXPECT_TRUE(handler.AtEnd(0u)); |
| + |
| + // GetDuration should return zero duration. |
| + EXPECT_EQ(base::TimeDelta(), handler.GetDuration()); |
| +} |
| + |
| +} // namespace |
| TEST(WavAudioHandlerTest, SampleDataTest) { |
| WavAudioHandler handler(base::StringPiece(kTestAudioData, |
| arraysize(kTestAudioData))); |
| + ASSERT_TRUE(handler.is_valid()); |
| ASSERT_EQ(2u, handler.num_channels()); |
| ASSERT_EQ(16u, handler.bits_per_sample()); |
| ASSERT_EQ(48000u, handler.sample_rate()); |
| @@ -34,4 +64,38 @@ TEST(WavAudioHandlerTest, SampleDataTest) { |
| ASSERT_EQ(static_cast<size_t>(handler.data().size()), bytes_written); |
| } |
| +TEST(WavAudioHandlerTest, TestZeroChannelsIsNotValid) { |
| + // Read in the sample data and modify the channel field to hold |00|00|. |
| + auto data = std::string(kTestAudioData, arraysize(kTestAudioData)); |
|
tommi (sloooow) - chröme
2015/11/17 20:48:39
std::string data(kTestAudioData, arraysize(kTestAu
|
| + data[kChannelIndex] = '\x00'; |
| + data[kChannelIndex + 1] = '\x00'; |
| + WavAudioHandler handler(base::StringPiece(data.c_str(), data.size())); |
| + EXPECT_FALSE(handler.is_valid()); |
| + CheckStateIsInvalid(handler); |
| +} |
| + |
| +TEST(WavAudioHandlerTest, TestZeroBitsPerSampleIsNotValid) { |
| + // Read in the sample data and modify the bits_per_sample field to hold |
| + // |00|00|. |
| + auto data = std::string(kTestAudioData, arraysize(kTestAudioData)); |
| + data[kBitsPerSampleIndex] = '\x00'; |
| + data[kBitsPerSampleIndex + 1] = '\x00'; |
| + WavAudioHandler handler(base::StringPiece(data.c_str(), data.size())); |
| + EXPECT_FALSE(handler.is_valid()); |
| + CheckStateIsInvalid(handler); |
| +} |
| + |
| +TEST(WavAudioHandlerTest, TestZeroSamplesPerSecondIsNotValid) { |
| + // Read in the sample data and modify the bits_per_sample field to hold |
| + // |00|00|. |
| + auto data = std::string(kTestAudioData, arraysize(kTestAudioData)); |
| + data[kSampleRateIndex] = '\x00'; |
| + data[kSampleRateIndex + 1] = '\x00'; |
| + data[kSampleRateIndex + 2] = '\x00'; |
| + data[kSampleRateIndex + 3] = '\x00'; |
| + WavAudioHandler handler(base::StringPiece(data.c_str(), data.size())); |
| + EXPECT_FALSE(handler.is_valid()); |
| + CheckStateIsInvalid(handler); |
| +} |
| + |
| } // namespace media |