diff options
Diffstat (limited to 'webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc')
-rw-r--r-- | webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc b/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc new file mode 100644 index 0000000000..88b5467f1f --- /dev/null +++ b/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "webrtc/modules/video_coding/codecs/interface/mock/mock_video_codec_interface.h" +#include "webrtc/modules/video_coding/codecs/test/mock/mock_packet_manipulator.h" +#include "webrtc/modules/video_coding/codecs/test/videoprocessor.h" +#include "webrtc/modules/video_coding/main/interface/video_coding.h" +#include "webrtc/test/testsupport/mock/mock_frame_reader.h" +#include "webrtc/test/testsupport/mock/mock_frame_writer.h" +#include "webrtc/test/testsupport/packet_reader.h" +#include "webrtc/test/testsupport/unittest_utils.h" +#include "webrtc/typedefs.h" + +using ::testing::_; +using ::testing::AtLeast; +using ::testing::Return; + +namespace webrtc { +namespace test { + +// Very basic testing for VideoProcessor. It's mostly tested by running the +// video_quality_measurement program. +class VideoProcessorTest: public testing::Test { + protected: + MockVideoEncoder encoder_mock_; + MockVideoDecoder decoder_mock_; + MockFrameReader frame_reader_mock_; + MockFrameWriter frame_writer_mock_; + MockPacketManipulator packet_manipulator_mock_; + Stats stats_; + TestConfig config_; + VideoCodec codec_settings_; + + VideoProcessorTest() {} + virtual ~VideoProcessorTest() {} + void SetUp() { + // Get a codec configuration struct and configure it. + VideoCodingModule::Codec(kVideoCodecVP8, &codec_settings_); + config_.codec_settings = &codec_settings_; + config_.codec_settings->startBitrate = 100; + config_.codec_settings->width = 352; + config_.codec_settings->height = 288; + } + void TearDown() {} + + void ExpectInit() { + EXPECT_CALL(encoder_mock_, InitEncode(_, _, _)) + .Times(1); + EXPECT_CALL(encoder_mock_, RegisterEncodeCompleteCallback(_)) + .Times(AtLeast(1)); + EXPECT_CALL(decoder_mock_, InitDecode(_, _)) + .Times(1); + EXPECT_CALL(decoder_mock_, RegisterDecodeCompleteCallback(_)) + .Times(AtLeast(1)); + EXPECT_CALL(frame_reader_mock_, NumberOfFrames()) + .WillOnce(Return(1)); + EXPECT_CALL(frame_reader_mock_, FrameLength()) + .WillOnce(Return(152064)); + } +}; + +TEST_F(VideoProcessorTest, Init) { + ExpectInit(); + VideoProcessorImpl video_processor(&encoder_mock_, &decoder_mock_, + &frame_reader_mock_, + &frame_writer_mock_, + &packet_manipulator_mock_, config_, + &stats_); + ASSERT_TRUE(video_processor.Init()); +} + +TEST_F(VideoProcessorTest, ProcessFrame) { + ExpectInit(); + EXPECT_CALL(encoder_mock_, Encode(_, _, _)) + .Times(1); + EXPECT_CALL(frame_reader_mock_, ReadFrame(_)) + .WillOnce(Return(true)); + // Since we don't return any callback from the mock, the decoder will not + // be more than initialized... + VideoProcessorImpl video_processor(&encoder_mock_, &decoder_mock_, + &frame_reader_mock_, + &frame_writer_mock_, + &packet_manipulator_mock_, config_, + &stats_); + ASSERT_TRUE(video_processor.Init()); + video_processor.ProcessFrame(0); +} + +} // namespace test +} // namespace webrtc |