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..286331425ca55876844cd5cb87ecc56166a5fedf 100644 |
--- a/media/audio/sounds/wav_audio_handler_unittest.cc |
+++ b/media/audio/sounds/wav_audio_handler_unittest.cc |
@@ -12,26 +12,71 @@ |
#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; |
+} // namespace |
TEST(WavAudioHandlerTest, SampleDataTest) { |
- WavAudioHandler handler(base::StringPiece(kTestAudioData, |
- arraysize(kTestAudioData))); |
- ASSERT_EQ(2u, handler.num_channels()); |
- ASSERT_EQ(16u, handler.bits_per_sample()); |
- ASSERT_EQ(48000u, handler.sample_rate()); |
- ASSERT_EQ(1u, handler.total_frames()); |
- ASSERT_EQ(20u, handler.GetDuration().InMicroseconds()); |
- |
- ASSERT_EQ(4U, handler.data().size()); |
+ auto handler = WavAudioHandler::Create( |
+ base::StringPiece(kTestAudioData, arraysize(kTestAudioData))); |
+ ASSERT_TRUE(handler); |
+ ASSERT_EQ(2u, handler->num_channels()); |
+ ASSERT_EQ(16u, handler->bits_per_sample()); |
+ ASSERT_EQ(48000u, handler->sample_rate()); |
+ ASSERT_EQ(1u, handler->total_frames()); |
+ ASSERT_EQ(20u, handler->GetDuration().InMicroseconds()); |
+ |
+ ASSERT_EQ(4U, handler->data().size()); |
const char kData[] = "\x01\x00\x01\x00"; |
- ASSERT_EQ(base::StringPiece(kData, arraysize(kData) - 1), handler.data()); |
+ ASSERT_EQ(base::StringPiece(kData, arraysize(kData) - 1), handler->data()); |
+ |
+ scoped_ptr<AudioBus> bus = |
+ AudioBus::Create(handler->num_channels(), |
+ handler->data().size() / handler->num_channels()); |
+ |
+ size_t bytes_written = 0u; |
+ ASSERT_TRUE(handler->CopyTo(bus.get(), 0, &bytes_written)); |
+ 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)); |
+ data[kChannelIndex] = '\x00'; |
+ data[kChannelIndex + 1] = '\x00'; |
+ auto handler = |
+ WavAudioHandler::Create(base::StringPiece(data.c_str(), data.size())); |
+ EXPECT_FALSE(handler); |
+} |
- scoped_ptr<AudioBus> bus = AudioBus::Create( |
- handler.num_channels(), handler.data().size() / handler.num_channels()); |
+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'; |
+ auto handler = |
+ WavAudioHandler::Create(base::StringPiece(data.c_str(), data.size())); |
+ EXPECT_FALSE(handler); |
+} |
- size_t bytes_written; |
- ASSERT_TRUE(handler.CopyTo(bus.get(), 0, &bytes_written)); |
- ASSERT_EQ(static_cast<size_t>(handler.data().size()), bytes_written); |
+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'; |
+ auto handler = |
+ WavAudioHandler::Create(base::StringPiece(data.c_str(), data.size())); |
+ EXPECT_FALSE(handler); |
+ ; |
} |
} // namespace media |