aboutsummaryrefslogtreecommitdiff
path: root/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc')
-rw-r--r--webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc99
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