Index: remoting/client/decoder_verbatim_unittest.cc |
diff --git a/remoting/client/decoder_verbatim_unittest.cc b/remoting/client/decoder_verbatim_unittest.cc |
index b9c1d797a35e72340c7bf75fa8741b3a3eedc797..d450cb7d022dab4081858f2476aae0a5c98846c5 100644 |
--- a/remoting/client/decoder_verbatim_unittest.cc |
+++ b/remoting/client/decoder_verbatim_unittest.cc |
@@ -2,12 +2,61 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "media/base/video_frame.h" |
+#include "remoting/client/decoder_verbatim.h" |
+#include "remoting/client/mock_objects.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+using ::testing::InSequence; |
+ |
namespace remoting { |
-// TODO(hclam): Implement unit tests. |
-TEST(DecoderVerbatimTest, Simple) { |
+TEST(DecoderVerbatimTest, SimpleDecode) { |
+ DecoderVerbatim decoder; |
+ scoped_refptr<MockDecodeDoneHandler> handler = new MockDecodeDoneHandler(); |
+ |
+ const size_t kWidth = 10; |
+ const size_t kHeight = 1; |
+ const char kData[] = "ABCDEFGHIJ"; |
+ scoped_ptr<HostMessage> msg(new HostMessage()); |
+ msg->mutable_update_stream_packet()->mutable_header()->set_width(kWidth); |
+ msg->mutable_update_stream_packet()->mutable_header()->set_height(kHeight); |
+ msg->mutable_update_stream_packet()->mutable_header()->set_x(0); |
+ msg->mutable_update_stream_packet()->mutable_header()->set_y(0); |
+ msg->mutable_update_stream_packet()->mutable_header()->set_pixel_format( |
+ PixelFormatAscii); |
+ msg->mutable_update_stream_packet()->set_data(kData, sizeof(kData)); |
+ |
+ scoped_refptr<media::VideoFrame> frame; |
+ media::VideoFrame::CreateFrame(media::VideoFrame::ASCII, kWidth, kHeight, |
+ base::TimeDelta(), base::TimeDelta(), &frame); |
+ ASSERT_TRUE(frame); |
+ |
+ InSequence s; |
+ EXPECT_CALL(*handler, PartialDecodeDone()); |
+ EXPECT_CALL(*handler, DecodeDone()); |
+ |
+ UpdatedRects rects; |
+ decoder.BeginDecode( |
+ frame, &rects, |
+ NewRunnableMethod(handler.get(), |
+ &MockDecodeDoneHandler::PartialDecodeDone), |
+ NewRunnableMethod(handler.get(), &MockDecodeDoneHandler::DecodeDone)); |
+ decoder.PartialDecode(msg.release()); |
+ decoder.EndDecode(); |
+ |
+ // Make sure we get the same data back. |
+ EXPECT_EQ(kWidth, frame->width()); |
+ EXPECT_EQ(kHeight, frame->height()); |
+ EXPECT_EQ(media::VideoFrame::ASCII, frame->format()); |
+ EXPECT_EQ(0, memcmp(kData, frame->data(media::VideoFrame::kRGBPlane), |
+ sizeof(kData))); |
+ |
+ // Check the updated rects. |
+ ASSERT_TRUE(rects.size() == 1); |
+ EXPECT_EQ(kWidth, static_cast<size_t>(rects[0].width())); |
+ EXPECT_EQ(kHeight, static_cast<size_t>(rects[0].height())); |
} |
} // namespace remoting |