Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Side by Side Diff: extensions/renderer/api/serial/data_sender_unittest.cc

Issue 2410743002: Remove the mojo serial interfaces and related infrastructure. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 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 <stdint.h>
6
7 #include <queue>
8 #include <utility>
9
10 #include "base/macros.h"
11 #include "device/serial/data_sink_receiver.h"
12 #include "device/serial/data_stream.mojom.h"
13 #include "extensions/renderer/api_test_base.h"
14 #include "grit/extensions_renderer_resources.h"
15
16 namespace extensions {
17
18 // Runs tests defined in extensions/test/data/data_sender_unittest.js
19 class DataSenderTest : public ApiTestBase {
20 public:
21 DataSenderTest() {}
22
23 void SetUp() override {
24 ApiTestBase::SetUp();
25 interface_provider()->AddInterface(
26 base::Bind(&DataSenderTest::CreateDataSink, base::Unretained(this)));
27 }
28
29 void TearDown() override {
30 if (receiver_.get()) {
31 receiver_->ShutDown();
32 receiver_ = NULL;
33 }
34 EXPECT_FALSE(buffer_);
35 buffer_.reset();
36 ApiTestBase::TearDown();
37 }
38
39 std::queue<int32_t> error_to_report_;
40 std::queue<std::string> expected_data_;
41
42 private:
43 void CreateDataSink(
44 mojo::InterfaceRequest<device::serial::DataSink> request) {
45 receiver_ = new device::DataSinkReceiver(
46 std::move(request),
47 base::Bind(&DataSenderTest::ReadyToReceive, base::Unretained(this)),
48 base::Bind(&DataSenderTest::OnCancel, base::Unretained(this)),
49 base::Bind(base::DoNothing));
50 }
51
52 void ReadyToReceive(std::unique_ptr<device::ReadOnlyBuffer> buffer) {
53 std::string data(buffer->GetData(), buffer->GetSize());
54 if (expected_data_.empty()) {
55 buffer_ = std::move(buffer);
56 return;
57 }
58
59 std::string& expected = expected_data_.front();
60 if (expected.size() > buffer->GetSize()) {
61 EXPECT_EQ(expected.substr(0, buffer->GetSize()), data);
62 expected = expected.substr(buffer->GetSize());
63 buffer->Done(buffer->GetSize());
64 return;
65 }
66 if (expected.size() < buffer->GetSize())
67 data = data.substr(0, expected.size());
68 EXPECT_EQ(expected, data);
69 expected_data_.pop();
70 int32_t error = 0;
71 if (!error_to_report_.empty()) {
72 error = error_to_report_.front();
73 error_to_report_.pop();
74 }
75 if (error)
76 buffer->DoneWithError(static_cast<uint32_t>(data.size()), error);
77 else
78 buffer->Done(static_cast<uint32_t>(data.size()));
79 }
80
81 void OnCancel(int32_t error) {
82 ASSERT_TRUE(buffer_);
83 buffer_->DoneWithError(0, error);
84 buffer_.reset();
85 }
86
87 scoped_refptr<device::DataSinkReceiver> receiver_;
88 std::unique_ptr<device::ReadOnlyBuffer> buffer_;
89
90 DISALLOW_COPY_AND_ASSIGN(DataSenderTest);
91 };
92
93 TEST_F(DataSenderTest, Send) {
94 expected_data_.push("aa");
95 RunTest("data_sender_unittest.js", "testSend");
96 }
97
98 // https://crbug.com/599898
99 #if defined(LEAK_SANITIZER)
100 #define MAYBE_LargeSend DISABLED_LargeSend
101 #else
102 #define MAYBE_LargeSend LargeSend
103 #endif
104 TEST_F(DataSenderTest, MAYBE_LargeSend) {
105 std::string pattern = "123";
106 std::string expected_data;
107 for (int i = 0; i < 11; i++)
108 expected_data += pattern;
109 expected_data_.push(expected_data);
110 RunTest("data_sender_unittest.js", "testLargeSend");
111 }
112
113 TEST_F(DataSenderTest, SendError) {
114 expected_data_.push("");
115 expected_data_.push("a");
116 error_to_report_.push(1);
117 RunTest("data_sender_unittest.js", "testSendError");
118 }
119
120 TEST_F(DataSenderTest, SendErrorPartialSuccess) {
121 expected_data_.push(std::string(5, 'b'));
122 expected_data_.push("a");
123 error_to_report_.push(1);
124 RunTest("data_sender_unittest.js", "testSendErrorPartialSuccess");
125 }
126
127 TEST_F(DataSenderTest, SendErrorBetweenPackets) {
128 expected_data_.push(std::string(2, 'b'));
129 expected_data_.push("a");
130 error_to_report_.push(1);
131 RunTest("data_sender_unittest.js", "testSendErrorBetweenPackets");
132 }
133
134 TEST_F(DataSenderTest, SendErrorInSecondPacket) {
135 expected_data_.push(std::string(3, 'b'));
136 expected_data_.push("a");
137 error_to_report_.push(1);
138 RunTest("data_sender_unittest.js", "testSendErrorInSecondPacket");
139 }
140
141 TEST_F(DataSenderTest, SendErrorInLargeSend) {
142 expected_data_.push("123456789012");
143 expected_data_.push("a");
144 error_to_report_.push(1);
145 RunTest("data_sender_unittest.js", "testSendErrorInLargeSend");
146 }
147
148 TEST_F(DataSenderTest, SendErrorBeforeLargeSend) {
149 expected_data_.push(std::string(2, 'b'));
150 expected_data_.push("a");
151 error_to_report_.push(1);
152 RunTest("data_sender_unittest.js", "testSendErrorBeforeLargeSend");
153 }
154
155 // https://crbug.com/599898
156 #if defined(LEAK_SANITIZER)
157 #define MAYBE_CancelWithoutSend DISABLED_CancelWithoutSend
158 #else
159 #define MAYBE_CancelWithoutSend CancelWithoutSend
160 #endif
161 TEST_F(DataSenderTest, MAYBE_CancelWithoutSend) {
162 RunTest("data_sender_unittest.js", "testCancelWithoutSend");
163 }
164
165 TEST_F(DataSenderTest, Cancel) {
166 RunTest("data_sender_unittest.js", "testCancel");
167 }
168
169 // https://crbug.com/599898
170 #if defined(LEAK_SANITIZER)
171 #define MAYBE_Close DISABLED_Close
172 #else
173 #define MAYBE_Close Close
174 #endif
175 TEST_F(DataSenderTest, MAYBE_Close) {
176 RunTest("data_sender_unittest.js", "testClose");
177 }
178
179 TEST_F(DataSenderTest, SendAfterSerialization) {
180 expected_data_.push("aa");
181 RunTest("data_sender_unittest.js", "testSendAfterSerialization");
182 }
183
184 TEST_F(DataSenderTest, SendErrorAfterSerialization) {
185 expected_data_.push("");
186 expected_data_.push("a");
187 error_to_report_.push(1);
188 RunTest("data_sender_unittest.js", "testSendErrorAfterSerialization");
189 }
190
191 TEST_F(DataSenderTest, CancelAfterSerialization) {
192 RunTest("data_sender_unittest.js", "testCancelAfterSerialization");
193 }
194
195 TEST_F(DataSenderTest, SerializeCancelsSendsInProgress) {
196 RunTest("data_sender_unittest.js", "testSerializeCancelsSendsInProgress");
197 }
198
199 TEST_F(DataSenderTest, SerializeWaitsForCancel) {
200 RunTest("data_sender_unittest.js", "testSerializeWaitsForCancel");
201 }
202
203 // https://crbug.com/599898
204 #if defined(LEAK_SANITIZER)
205 #define MAYBE_SerializeAfterClose DISABLED_SerializeAfterClose
206 #else
207 #define MAYBE_SerializeAfterClose SerializeAfterClose
208 #endif
209 TEST_F(DataSenderTest, MAYBE_SerializeAfterClose) {
210 RunTest("data_sender_unittest.js", "testSerializeAfterClose");
211 }
212
213 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/renderer/api/serial/data_receiver_unittest.cc ('k') | extensions/renderer/api/serial/serial_api_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698