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

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: remove TimeoutManager.pause() 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
« no previous file with comments | « no previous file | extensions/renderer/resources/serial_custom_bindings.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // A test launcher for tests for the serial API defined in
12 // extensions/test/data/serial_unittest.js. Each C++ test function sets up a
13 // fake DeviceEnumerator or SerialIoHandler expecting or returning particular
14 // values for that test.
15
11 namespace extensions { 16 namespace extensions {
12 17
13 namespace { 18 namespace {
14 19
15 class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator { 20 class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator {
16 virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() OVERRIDE { 21 virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() OVERRIDE {
17 mojo::Array<device::serial::DeviceInfoPtr> result(3); 22 mojo::Array<device::serial::DeviceInfoPtr> result(3);
18 result[0] = device::serial::DeviceInfo::New(); 23 result[0] = device::serial::DeviceInfo::New();
19 result[0]->path = "device"; 24 result[0]->path = "device";
20 result[0]->vendor_id = 1234; 25 result[0]->vendor_id = 1234;
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 } 296 }
292 297
293 private: 298 private:
294 virtual ~FailToGetInfoTestIoHandler() {} 299 virtual ~FailToGetInfoTestIoHandler() {}
295 300
296 mutable int times_to_succeed_; 301 mutable int times_to_succeed_;
297 302
298 DISALLOW_COPY_AND_ASSIGN(FailToGetInfoTestIoHandler); 303 DISALLOW_COPY_AND_ASSIGN(FailToGetInfoTestIoHandler);
299 }; 304 };
300 305
306 class SendErrorTestIoHandler : public TestIoHandlerBase {
307 public:
308 explicit SendErrorTestIoHandler(device::serial::SendError error)
309 : error_(error) {}
310
311 virtual void WriteImpl() OVERRIDE { QueueWriteCompleted(0, error_); }
312
313 private:
314 virtual ~SendErrorTestIoHandler() {}
315
316 device::serial::SendError error_;
317
318 DISALLOW_COPY_AND_ASSIGN(SendErrorTestIoHandler);
319 };
320
321 class FixedDataReceiveTestIoHandler : public TestIoHandlerBase {
322 public:
323 explicit FixedDataReceiveTestIoHandler(const std::string& data)
324 : data_(data) {}
325
326 virtual void ReadImpl() OVERRIDE {
327 if (pending_read_buffer_len() < data_.size())
328 return;
329 memcpy(pending_read_buffer(), data_.c_str(), data_.size());
330 QueueReadCompleted(static_cast<uint32_t>(data_.size()),
331 device::serial::RECEIVE_ERROR_NONE);
332 }
333
334 private:
335 virtual ~FixedDataReceiveTestIoHandler() {}
336
337 const std::string data_;
338
339 DISALLOW_COPY_AND_ASSIGN(FixedDataReceiveTestIoHandler);
340 };
341
342 class ReceiveErrorTestIoHandler : public TestIoHandlerBase {
343 public:
344 explicit ReceiveErrorTestIoHandler(device::serial::ReceiveError error)
345 : error_(error) {}
346
347 virtual void ReadImpl() OVERRIDE { QueueReadCompleted(0, error_); }
348
349 private:
350 virtual ~ReceiveErrorTestIoHandler() {}
351
352 device::serial::ReceiveError error_;
353
354 DISALLOW_COPY_AND_ASSIGN(ReceiveErrorTestIoHandler);
355 };
356
357 class SendDataWithErrorIoHandler : public TestIoHandlerBase {
358 public:
359 SendDataWithErrorIoHandler() : sent_error_(false) {}
360 virtual void WriteImpl() OVERRIDE {
361 if (sent_error_) {
362 WriteCompleted(pending_write_buffer_len(),
363 device::serial::SEND_ERROR_NONE);
364 return;
365 }
366 sent_error_ = true;
367 // We expect the JS test code to send a 4 byte buffer.
368 ASSERT_LT(2u, pending_write_buffer_len());
369 WriteCompleted(2, device::serial::SEND_ERROR_SYSTEM_ERROR);
370 }
371
372 private:
373 virtual ~SendDataWithErrorIoHandler() {}
374
375 bool sent_error_;
376
377 DISALLOW_COPY_AND_ASSIGN(SendDataWithErrorIoHandler);
378 };
379
380 class BlockSendsForeverSendIoHandler : public TestIoHandlerBase {
381 public:
382 BlockSendsForeverSendIoHandler() {}
383 virtual void WriteImpl() OVERRIDE {}
384
385 private:
386 virtual ~BlockSendsForeverSendIoHandler() {}
387
388 DISALLOW_COPY_AND_ASSIGN(BlockSendsForeverSendIoHandler);
389 };
390
301 } // namespace 391 } // namespace
302 392
303 class SerialApiTest : public ApiTestBase { 393 class SerialApiTest : public ApiTestBase {
304 public: 394 public:
305 SerialApiTest() {} 395 SerialApiTest() {}
306 396
307 virtual void SetUp() OVERRIDE { 397 virtual void SetUp() OVERRIDE {
308 ApiTestBase::SetUp(); 398 ApiTestBase::SetUp();
399 env()->RegisterModule("async_waiter", IDR_ASYNC_WAITER_JS);
400 env()->RegisterModule("data_receiver", IDR_DATA_RECEIVER_JS);
401 env()->RegisterModule("data_sender", IDR_DATA_SENDER_JS);
309 env()->RegisterModule("serial", IDR_SERIAL_CUSTOM_BINDINGS_JS); 402 env()->RegisterModule("serial", IDR_SERIAL_CUSTOM_BINDINGS_JS);
310 env()->RegisterModule("serial_service", IDR_SERIAL_SERVICE_JS); 403 env()->RegisterModule("serial_service", IDR_SERIAL_SERVICE_JS);
311 env()->RegisterModule("device/serial/data_stream.mojom", 404 env()->RegisterModule("device/serial/data_stream.mojom",
312 IDR_DATA_STREAM_MOJOM_JS); 405 IDR_DATA_STREAM_MOJOM_JS);
313 env()->RegisterModule("device/serial/serial.mojom", IDR_SERIAL_MOJOM_JS); 406 env()->RegisterModule("device/serial/serial.mojom", IDR_SERIAL_MOJOM_JS);
314 service_provider()->AddService<device::serial::SerialService>(base::Bind( 407 service_provider()->AddService<device::serial::SerialService>(base::Bind(
315 &SerialApiTest::CreateSerialService, base::Unretained(this))); 408 &SerialApiTest::CreateSerialService, base::Unretained(this)));
316 } 409 }
317 410
318 virtual void TearDown() OVERRIDE { 411 virtual void TearDown() OVERRIDE {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 TEST_F(SerialApiTest, Flush) { 504 TEST_F(SerialApiTest, Flush) {
412 io_handler_ = new FlushTestIoHandler; 505 io_handler_ = new FlushTestIoHandler;
413 RunTest("serial_unittest.js", "testFlush"); 506 RunTest("serial_unittest.js", "testFlush");
414 EXPECT_EQ(1u, io_handler_->num_calls()); 507 EXPECT_EQ(1u, io_handler_->num_calls());
415 } 508 }
416 509
417 TEST_F(SerialApiTest, SetPaused) { 510 TEST_F(SerialApiTest, SetPaused) {
418 RunTest("serial_unittest.js", "testSetPaused"); 511 RunTest("serial_unittest.js", "testSetPaused");
419 } 512 }
420 513
514 TEST_F(SerialApiTest, Echo) {
515 RunTest("serial_unittest.js", "testEcho");
516 }
517
518 TEST_F(SerialApiTest, SendDuringExistingSend) {
519 RunTest("serial_unittest.js", "testSendDuringExistingSend");
520 }
521
522 TEST_F(SerialApiTest, SendAfterSuccessfulSend) {
523 RunTest("serial_unittest.js", "testSendAfterSuccessfulSend");
524 }
525
526 TEST_F(SerialApiTest, SendPartialSuccessWithError) {
527 io_handler_ = new SendDataWithErrorIoHandler();
528 RunTest("serial_unittest.js", "testSendPartialSuccessWithError");
529 }
530
531 TEST_F(SerialApiTest, SendTimeout) {
532 io_handler_ = new BlockSendsForeverSendIoHandler();
533 RunTest("serial_unittest.js", "testSendTimeout");
534 }
535
536 TEST_F(SerialApiTest, DisableSendTimeout) {
537 io_handler_ = new BlockSendsForeverSendIoHandler();
538 RunTest("serial_unittest.js", "testDisableSendTimeout");
539 }
540
541 TEST_F(SerialApiTest, PausedReceive) {
542 io_handler_ = new FixedDataReceiveTestIoHandler("data");
543 RunTest("serial_unittest.js", "testPausedReceive");
544 }
545
546 TEST_F(SerialApiTest, PausedReceiveError) {
547 io_handler_ =
548 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_DEVICE_LOST);
549 RunTest("serial_unittest.js", "testPausedReceiveError");
550 }
551
552 TEST_F(SerialApiTest, ReceiveTimeout) {
553 RunTest("serial_unittest.js", "testReceiveTimeout");
554 }
555
556 TEST_F(SerialApiTest, DisableReceiveTimeout) {
557 RunTest("serial_unittest.js", "testDisableReceiveTimeout");
558 }
559
560 TEST_F(SerialApiTest, ReceiveErrorDisconnected) {
561 io_handler_ =
562 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_DISCONNECTED);
563 RunTest("serial_unittest.js", "testReceiveErrorDisconnected");
564 }
565
566 TEST_F(SerialApiTest, ReceiveErrorDeviceLost) {
567 io_handler_ =
568 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_DEVICE_LOST);
569 RunTest("serial_unittest.js", "testReceiveErrorDeviceLost");
570 }
571
572 TEST_F(SerialApiTest, ReceiveErrorSystemError) {
573 io_handler_ =
574 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_SYSTEM_ERROR);
575 RunTest("serial_unittest.js", "testReceiveErrorSystemError");
576 }
577
578 TEST_F(SerialApiTest, SendErrorDisconnected) {
579 io_handler_ =
580 new SendErrorTestIoHandler(device::serial::SEND_ERROR_DISCONNECTED);
581 RunTest("serial_unittest.js", "testSendErrorDisconnected");
582 }
583
584 TEST_F(SerialApiTest, SendErrorSystemError) {
585 io_handler_ =
586 new SendErrorTestIoHandler(device::serial::SEND_ERROR_SYSTEM_ERROR);
587 RunTest("serial_unittest.js", "testSendErrorSystemError");
588 }
589
421 TEST_F(SerialApiTest, DisconnectUnknownConnectionId) { 590 TEST_F(SerialApiTest, DisconnectUnknownConnectionId) {
422 RunTest("serial_unittest.js", "testDisconnectUnknownConnectionId"); 591 RunTest("serial_unittest.js", "testDisconnectUnknownConnectionId");
423 } 592 }
424 593
425 TEST_F(SerialApiTest, GetInfoUnknownConnectionId) { 594 TEST_F(SerialApiTest, GetInfoUnknownConnectionId) {
426 RunTest("serial_unittest.js", "testGetInfoUnknownConnectionId"); 595 RunTest("serial_unittest.js", "testGetInfoUnknownConnectionId");
427 } 596 }
428 597
429 TEST_F(SerialApiTest, UpdateUnknownConnectionId) { 598 TEST_F(SerialApiTest, UpdateUnknownConnectionId) {
430 RunTest("serial_unittest.js", "testUpdateUnknownConnectionId"); 599 RunTest("serial_unittest.js", "testUpdateUnknownConnectionId");
431 } 600 }
432 601
433 TEST_F(SerialApiTest, SetControlSignalsUnknownConnectionId) { 602 TEST_F(SerialApiTest, SetControlSignalsUnknownConnectionId) {
434 RunTest("serial_unittest.js", "testSetControlSignalsUnknownConnectionId"); 603 RunTest("serial_unittest.js", "testSetControlSignalsUnknownConnectionId");
435 } 604 }
436 605
437 TEST_F(SerialApiTest, GetControlSignalsUnknownConnectionId) { 606 TEST_F(SerialApiTest, GetControlSignalsUnknownConnectionId) {
438 RunTest("serial_unittest.js", "testGetControlSignalsUnknownConnectionId"); 607 RunTest("serial_unittest.js", "testGetControlSignalsUnknownConnectionId");
439 } 608 }
440 609
441 TEST_F(SerialApiTest, FlushUnknownConnectionId) { 610 TEST_F(SerialApiTest, FlushUnknownConnectionId) {
442 RunTest("serial_unittest.js", "testFlushUnknownConnectionId"); 611 RunTest("serial_unittest.js", "testFlushUnknownConnectionId");
443 } 612 }
444 613
445 TEST_F(SerialApiTest, SetPausedUnknownConnectionId) { 614 TEST_F(SerialApiTest, SetPausedUnknownConnectionId) {
446 RunTest("serial_unittest.js", "testSetPausedUnknownConnectionId"); 615 RunTest("serial_unittest.js", "testSetPausedUnknownConnectionId");
447 } 616 }
448 617
618 TEST_F(SerialApiTest, SendUnknownConnectionId) {
619 RunTest("serial_unittest.js", "testSendUnknownConnectionId");
620 }
621
449 } // namespace extensions 622 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | extensions/renderer/resources/serial_custom_bindings.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698