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

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

Issue 509813002: Implement the client side of Serial I/O on data pipe. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@serial-io
Patch Set: address comments Created 6 years, 3 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/serial/serial_device_enumerator.h" 5 #include "device/serial/serial_device_enumerator.h"
6 #include "device/serial/serial_service_impl.h" 6 #include "device/serial/serial_service_impl.h"
7 #include "device/serial/test_serial_io_handler.h" 7 #include "device/serial/test_serial_io_handler.h"
8 #include "extensions/renderer/api_test_base.h" 8 #include "extensions/renderer/api_test_base.h"
9 #include "grit/extensions_renderer_resources.h" 9 #include "grit/extensions_renderer_resources.h"
10 10
11 namespace extensions { 11 namespace extensions {
12 12
raymes 2014/09/02 04:59:32 Make a note somewhere in this file of what these t
Sam McNally 2014/09/02 07:41:12 Done.
13 namespace { 13 namespace {
14 14
15 class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator { 15 class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator {
16 virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() OVERRIDE { 16 virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() OVERRIDE {
17 mojo::Array<device::serial::DeviceInfoPtr> result(3); 17 mojo::Array<device::serial::DeviceInfoPtr> result(3);
18 result[0] = device::serial::DeviceInfo::New(); 18 result[0] = device::serial::DeviceInfo::New();
19 result[0]->path = "device"; 19 result[0]->path = "device";
20 result[0]->vendor_id = 1234; 20 result[0]->vendor_id = 1234;
21 result[0]->has_vendor_id = true; 21 result[0]->has_vendor_id = true;
22 result[0]->product_id = 5678; 22 result[0]->product_id = 5678;
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 } 291 }
292 292
293 private: 293 private:
294 virtual ~FailToGetInfoTestIoHandler() {} 294 virtual ~FailToGetInfoTestIoHandler() {}
295 295
296 mutable int times_to_succeed_; 296 mutable int times_to_succeed_;
297 297
298 DISALLOW_COPY_AND_ASSIGN(FailToGetInfoTestIoHandler); 298 DISALLOW_COPY_AND_ASSIGN(FailToGetInfoTestIoHandler);
299 }; 299 };
300 300
301 class SendErrorTestIoHandler : public TestIoHandlerBase {
302 public:
303 explicit SendErrorTestIoHandler(device::serial::SendError error)
304 : error_(error) {}
305
306 virtual void WriteImpl() OVERRIDE { QueueWriteCompleted(0, error_); }
307
308 private:
309 virtual ~SendErrorTestIoHandler() {}
310
311 device::serial::SendError error_;
312
313 DISALLOW_COPY_AND_ASSIGN(SendErrorTestIoHandler);
314 };
315
316 class FixedDataReceiveTestIoHandler : public TestIoHandlerBase {
317 public:
318 explicit FixedDataReceiveTestIoHandler(const std::string& data)
319 : data_(data) {}
320
321 virtual void ReadImpl() OVERRIDE {
322 if (pending_read_buffer_len() < data_.size())
323 return;
324 memcpy(pending_read_buffer(), data_.c_str(), data_.size());
325 QueueReadCompleted(static_cast<uint32_t>(data_.size()),
326 device::serial::RECEIVE_ERROR_NONE);
327 }
328
329 private:
330 virtual ~FixedDataReceiveTestIoHandler() {}
331
332 const std::string data_;
333
334 DISALLOW_COPY_AND_ASSIGN(FixedDataReceiveTestIoHandler);
335 };
336
337 class ReceiveErrorTestIoHandler : public TestIoHandlerBase {
338 public:
339 explicit ReceiveErrorTestIoHandler(device::serial::ReceiveError error)
340 : error_(error) {}
341
342 virtual void ReadImpl() OVERRIDE { QueueReadCompleted(0, error_); }
343
344 private:
345 virtual ~ReceiveErrorTestIoHandler() {}
346
347 device::serial::ReceiveError error_;
348
349 DISALLOW_COPY_AND_ASSIGN(ReceiveErrorTestIoHandler);
350 };
351
352 class SendDataWithErrorIoHandler : public TestIoHandlerBase {
353 public:
354 SendDataWithErrorIoHandler() : sent_error_(false) {}
355 virtual void WriteImpl() OVERRIDE {
356 if (sent_error_) {
357 WriteCompleted(pending_write_buffer_len(),
358 device::serial::SEND_ERROR_NONE);
359 return;
360 }
361 sent_error_ = true;
362 // We expect the JS test code to send a 4 byte buffer.
363 ASSERT_LT(2u, pending_write_buffer_len());
364 WriteCompleted(2, device::serial::SEND_ERROR_SYSTEM_ERROR);
365 }
366
367 private:
368 virtual ~SendDataWithErrorIoHandler() {}
369
370 bool sent_error_;
371
372 DISALLOW_COPY_AND_ASSIGN(SendDataWithErrorIoHandler);
373 };
374
375 class BlockSendsForeverSendIoHandler : public TestIoHandlerBase {
376 public:
377 BlockSendsForeverSendIoHandler() {}
378 virtual void WriteImpl() OVERRIDE {}
379
380 private:
381 virtual ~BlockSendsForeverSendIoHandler() {}
382
383 DISALLOW_COPY_AND_ASSIGN(BlockSendsForeverSendIoHandler);
384 };
385
301 } // namespace 386 } // namespace
302 387
303 class SerialApiTest : public ApiTestBase { 388 class SerialApiTest : public ApiTestBase {
304 public: 389 public:
305 SerialApiTest() {} 390 SerialApiTest() {}
306 391
307 virtual void SetUp() OVERRIDE { 392 virtual void SetUp() OVERRIDE {
308 ApiTestBase::SetUp(); 393 ApiTestBase::SetUp();
394 env()->RegisterModule("async_waiter", IDR_ASYNC_WAITER_JS);
395 env()->RegisterModule("data_receiver", IDR_DATA_RECEIVER_JS);
396 env()->RegisterModule("data_sender", IDR_DATA_SENDER_JS);
309 env()->RegisterModule("serial", IDR_SERIAL_CUSTOM_BINDINGS_JS); 397 env()->RegisterModule("serial", IDR_SERIAL_CUSTOM_BINDINGS_JS);
310 env()->RegisterModule("serial_service", IDR_SERIAL_SERVICE_JS); 398 env()->RegisterModule("serial_service", IDR_SERIAL_SERVICE_JS);
311 env()->RegisterModule("device/serial/data_stream.mojom", 399 env()->RegisterModule("device/serial/data_stream.mojom",
312 IDR_DATA_STREAM_MOJOM_JS); 400 IDR_DATA_STREAM_MOJOM_JS);
313 env()->RegisterModule("device/serial/serial.mojom", IDR_SERIAL_MOJOM_JS); 401 env()->RegisterModule("device/serial/serial.mojom", IDR_SERIAL_MOJOM_JS);
314 service_provider()->AddService<device::serial::SerialService>(base::Bind( 402 service_provider()->AddService<device::serial::SerialService>(base::Bind(
315 &SerialApiTest::CreateSerialService, base::Unretained(this))); 403 &SerialApiTest::CreateSerialService, base::Unretained(this)));
316 } 404 }
317 405
318 virtual void TearDown() OVERRIDE { 406 virtual void TearDown() OVERRIDE {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 TEST_F(SerialApiTest, Flush) { 499 TEST_F(SerialApiTest, Flush) {
412 io_handler_ = new FlushTestIoHandler; 500 io_handler_ = new FlushTestIoHandler;
413 RunTest("serial_unittest.js", "testFlush"); 501 RunTest("serial_unittest.js", "testFlush");
414 EXPECT_EQ(1u, io_handler_->num_calls()); 502 EXPECT_EQ(1u, io_handler_->num_calls());
415 } 503 }
416 504
417 TEST_F(SerialApiTest, SetPaused) { 505 TEST_F(SerialApiTest, SetPaused) {
418 RunTest("serial_unittest.js", "testSetPaused"); 506 RunTest("serial_unittest.js", "testSetPaused");
419 } 507 }
420 508
509 TEST_F(SerialApiTest, Echo) {
510 RunTest("serial_unittest.js", "testEcho");
511 }
512
513 TEST_F(SerialApiTest, SendDuringExistingSend) {
514 RunTest("serial_unittest.js", "testSendDuringExistingSend");
515 }
516
517 TEST_F(SerialApiTest, SendAfterSuccessfulSend) {
518 RunTest("serial_unittest.js", "testSendAfterSuccessfulSend");
519 }
520
521 TEST_F(SerialApiTest, SendPartialSuccessWithError) {
522 io_handler_ = new SendDataWithErrorIoHandler();
523 RunTest("serial_unittest.js", "testSendPartialSuccessWithError");
524 }
525
526 TEST_F(SerialApiTest, SendTimeout) {
527 io_handler_ = new BlockSendsForeverSendIoHandler();
528 RunTest("serial_unittest.js", "testSendTimeout");
529 }
530
531 TEST_F(SerialApiTest, DisableSendTimeout) {
532 io_handler_ = new BlockSendsForeverSendIoHandler();
533 RunTest("serial_unittest.js", "testDisableSendTimeout");
534 }
535
536 TEST_F(SerialApiTest, PausedReceive) {
537 io_handler_ = new FixedDataReceiveTestIoHandler("data");
538 RunTest("serial_unittest.js", "testPausedReceive");
539 }
540
541 TEST_F(SerialApiTest, PausedReceiveError) {
542 io_handler_ =
543 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_DEVICE_LOST);
544 RunTest("serial_unittest.js", "testPausedReceiveError");
545 }
546
547 TEST_F(SerialApiTest, ReceiveTimeout) {
548 RunTest("serial_unittest.js", "testReceiveTimeout");
549 }
550
551 TEST_F(SerialApiTest, DisableReceiveTimeout) {
552 RunTest("serial_unittest.js", "testDisableReceiveTimeout");
553 }
554
555 TEST_F(SerialApiTest, ReceiveErrorDisconnected) {
556 io_handler_ =
557 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_DISCONNECTED);
558 RunTest("serial_unittest.js", "testReceiveErrorDisconnected");
559 }
560
561 TEST_F(SerialApiTest, ReceiveErrorTimeout) {
562 io_handler_ =
563 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_TIMEOUT);
564 RunTest("serial_unittest.js", "testReceiveErrorTimeout");
565 }
566
567 TEST_F(SerialApiTest, ReceiveErrorDeviceLost) {
568 io_handler_ =
569 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_DEVICE_LOST);
570 RunTest("serial_unittest.js", "testReceiveErrorDeviceLost");
571 }
572
573 TEST_F(SerialApiTest, ReceiveErrorSystemError) {
574 io_handler_ =
575 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_SYSTEM_ERROR);
576 RunTest("serial_unittest.js", "testReceiveErrorSystemError");
577 }
578
579 TEST_F(SerialApiTest, SendErrorDisconnected) {
580 io_handler_ =
581 new SendErrorTestIoHandler(device::serial::SEND_ERROR_DISCONNECTED);
582 RunTest("serial_unittest.js", "testSendErrorDisconnected");
583 }
584
585 TEST_F(SerialApiTest, SendErrorTimeout) {
586 io_handler_ = new SendErrorTestIoHandler(device::serial::SEND_ERROR_TIMEOUT);
587 RunTest("serial_unittest.js", "testSendErrorTimeout");
588 }
589
590 TEST_F(SerialApiTest, SendErrorSystemError) {
591 io_handler_ =
592 new SendErrorTestIoHandler(device::serial::SEND_ERROR_SYSTEM_ERROR);
593 RunTest("serial_unittest.js", "testSendErrorSystemError");
594 }
595
421 TEST_F(SerialApiTest, DisconnectUnknownConnectionId) { 596 TEST_F(SerialApiTest, DisconnectUnknownConnectionId) {
422 RunTest("serial_unittest.js", "testDisconnectUnknownConnectionId"); 597 RunTest("serial_unittest.js", "testDisconnectUnknownConnectionId");
423 } 598 }
424 599
425 TEST_F(SerialApiTest, GetInfoUnknownConnectionId) { 600 TEST_F(SerialApiTest, GetInfoUnknownConnectionId) {
426 RunTest("serial_unittest.js", "testGetInfoUnknownConnectionId"); 601 RunTest("serial_unittest.js", "testGetInfoUnknownConnectionId");
427 } 602 }
428 603
429 TEST_F(SerialApiTest, UpdateUnknownConnectionId) { 604 TEST_F(SerialApiTest, UpdateUnknownConnectionId) {
430 RunTest("serial_unittest.js", "testUpdateUnknownConnectionId"); 605 RunTest("serial_unittest.js", "testUpdateUnknownConnectionId");
431 } 606 }
432 607
433 TEST_F(SerialApiTest, SetControlSignalsUnknownConnectionId) { 608 TEST_F(SerialApiTest, SetControlSignalsUnknownConnectionId) {
434 RunTest("serial_unittest.js", "testSetControlSignalsUnknownConnectionId"); 609 RunTest("serial_unittest.js", "testSetControlSignalsUnknownConnectionId");
435 } 610 }
436 611
437 TEST_F(SerialApiTest, GetControlSignalsUnknownConnectionId) { 612 TEST_F(SerialApiTest, GetControlSignalsUnknownConnectionId) {
438 RunTest("serial_unittest.js", "testGetControlSignalsUnknownConnectionId"); 613 RunTest("serial_unittest.js", "testGetControlSignalsUnknownConnectionId");
439 } 614 }
440 615
441 TEST_F(SerialApiTest, FlushUnknownConnectionId) { 616 TEST_F(SerialApiTest, FlushUnknownConnectionId) {
442 RunTest("serial_unittest.js", "testFlushUnknownConnectionId"); 617 RunTest("serial_unittest.js", "testFlushUnknownConnectionId");
443 } 618 }
444 619
445 TEST_F(SerialApiTest, SetPausedUnknownConnectionId) { 620 TEST_F(SerialApiTest, SetPausedUnknownConnectionId) {
446 RunTest("serial_unittest.js", "testSetPausedUnknownConnectionId"); 621 RunTest("serial_unittest.js", "testSetPausedUnknownConnectionId");
447 } 622 }
448 623
624 TEST_F(SerialApiTest, SendUnknownConnectionId) {
625 RunTest("serial_unittest.js", "testSendUnknownConnectionId");
626 }
627
449 } // namespace extensions 628 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | extensions/renderer/resources/serial_custom_bindings.js » ('j') | extensions/test/data/serial_unittest.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698