|
OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/message_loop.h" | |
6 #include "content/renderer/media/video_capture_impl.h" | |
7 #include "testing/gmock/include/gmock/gmock.h" | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 | |
10 using ::testing::_; | |
11 using ::testing::Return; | |
12 | |
13 #define DEFAULT_CAPABILITY {176, 144, 30, 0, media::VideoFrame::I420, \ | |
scherkus (not reviewing)
2011/05/23 03:45:54
you only use this once -- perhaps inline into test
wjia(left Chromium)
2011/05/23 21:23:52
Right now, only one simple test has been added. Mo
| |
14 false, false } | |
15 | |
16 ACTION_P(DeleteMessage, return_value) { | |
17 delete arg0; | |
18 return return_value; | |
19 } | |
20 | |
21 class MockVideoCaptureMessageFilter : public VideoCaptureMessageFilter { | |
22 public: | |
23 MockVideoCaptureMessageFilter() : VideoCaptureMessageFilter(1) {} | |
24 virtual ~MockVideoCaptureMessageFilter() {} | |
25 | |
26 // Filter implementation. | |
27 MOCK_METHOD1(Send, bool(IPC::Message* message)); | |
28 MOCK_METHOD0(ReadyToSend, bool()); | |
29 | |
30 private: | |
31 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureMessageFilter); | |
32 }; | |
33 | |
34 class MockVideoCaptureClient : public media::VideoCapture::EventHandler { | |
35 public: | |
36 MockVideoCaptureClient() {} | |
37 virtual ~MockVideoCaptureClient() {} | |
38 | |
39 // Filter implementation. | |
40 MOCK_METHOD1(OnStarted, void(media::VideoCapture* capture)); | |
41 MOCK_METHOD1(OnStopped, void(media::VideoCapture* capture)); | |
42 MOCK_METHOD1(OnPaused, void(media::VideoCapture* capture)); | |
43 MOCK_METHOD2(OnError, void(media::VideoCapture* capture, int error_code)); | |
44 MOCK_METHOD2(OnBufferReady, | |
45 void(media::VideoCapture* capture, | |
46 scoped_refptr<media::VideoCapture::VideoFrameBuffer> buf)); | |
47 MOCK_METHOD2(OnDeviceInfoReceived, | |
48 void(media::VideoCapture* capture, | |
49 const media::VideoCaptureParams& device_info)); | |
50 | |
51 private: | |
52 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureClient); | |
53 }; | |
54 | |
55 class VideoCaptureImplTest : public ::testing::Test { | |
56 public: | |
57 VideoCaptureImplTest() { | |
58 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO)); | |
59 message_loop_proxy_ = | |
60 base::MessageLoopProxy::CreateForCurrentThread().get(); | |
61 | |
62 message_filter_ = new MockVideoCaptureMessageFilter; | |
63 session_id_ = 1; | |
64 | |
65 video_capture_impl_ = new VideoCaptureImpl(session_id_, message_loop_proxy_, | |
66 message_filter_); | |
67 | |
68 video_capture_impl_->device_id_ = 2; | |
69 } | |
70 | |
71 virtual ~VideoCaptureImplTest() { | |
72 delete video_capture_impl_; | |
73 } | |
74 | |
75 protected: | |
76 scoped_ptr<MessageLoop> message_loop_; | |
77 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_; | |
78 scoped_refptr<MockVideoCaptureMessageFilter> message_filter_; | |
79 media::VideoCaptureSessionId session_id_; | |
80 VideoCaptureImpl* video_capture_impl_; | |
scherkus (not reviewing)
2011/05/23 03:45:54
scoped_ptr?
wjia(left Chromium)
2011/05/23 21:23:52
VideoCaptureImpl has private ctor and dtor. Only V
| |
81 | |
82 private: | |
83 DISALLOW_COPY_AND_ASSIGN(VideoCaptureImplTest); | |
84 }; | |
85 | |
86 TEST_F(VideoCaptureImplTest, Simple) { | |
87 // Execute SetCapture() and StopCapture(). | |
88 | |
89 scoped_ptr<MockVideoCaptureClient> client(new MockVideoCaptureClient); | |
90 media::VideoCapture::VideoCaptureCapability capability = DEFAULT_CAPABILITY; | |
91 | |
92 EXPECT_CALL(*message_filter_, Send(_)) | |
93 .WillRepeatedly(DeleteMessage(true)); | |
94 | |
95 EXPECT_CALL(*message_filter_, ReadyToSend()) | |
96 .WillRepeatedly(Return(true)); | |
97 | |
98 EXPECT_CALL(*client, OnStarted(_)) | |
99 .WillOnce(Return()); | |
100 | |
101 EXPECT_CALL(*client, OnStopped(_)) | |
scherkus (not reviewing)
2011/05/23 03:45:54
I think it'd make more sense to move this call to
wjia(left Chromium)
2011/05/23 21:23:52
Done.
| |
102 .WillOnce(Return()); | |
103 | |
104 video_capture_impl_->StartCapture(client.get(), capability); | |
105 video_capture_impl_->StopCapture(client.get()); | |
106 } | |
OLD | NEW |