| Index: device/serial/serial_service_unittest.cc
|
| diff --git a/device/serial/serial_service_unittest.cc b/device/serial/serial_service_unittest.cc
|
| index 18baec6ae33aace04bde0566677b2c256f094e24..b14d95f1f3e618aa459e4106a88826da4226bb91 100644
|
| --- a/device/serial/serial_service_unittest.cc
|
| +++ b/device/serial/serial_service_unittest.cc
|
| @@ -27,10 +27,6 @@ class FakeSerialDeviceEnumerator : public SerialDeviceEnumerator {
|
|
|
| class FailToOpenIoHandler : public TestSerialIoHandler {
|
| public:
|
| - static scoped_refptr<SerialIoHandler> Create() {
|
| - return new FailToOpenIoHandler;
|
| - }
|
| -
|
| virtual void Open(const std::string& port,
|
| const OpenCompleteCallback& callback) OVERRIDE {
|
| callback.Run(false);
|
| @@ -44,7 +40,7 @@ class FailToOpenIoHandler : public TestSerialIoHandler {
|
|
|
| class SerialServiceTest : public testing::Test, public mojo::ErrorHandler {
|
| public:
|
| - SerialServiceTest() {}
|
| + SerialServiceTest() : connected_(false), expecting_error_(false) {}
|
|
|
| void StoreDevices(mojo::Array<serial::DeviceInfoPtr> devices) {
|
| devices_ = devices.Pass();
|
| @@ -66,12 +62,48 @@ class SerialServiceTest : public testing::Test, public mojo::ErrorHandler {
|
| message_loop_.PostTask(FROM_HERE, run_loop_->QuitClosure());
|
| }
|
|
|
| - void OnGotInfo(serial::ConnectionInfoPtr options) { StopMessageLoop(); }
|
| + void OnGotInfo(serial::ConnectionInfoPtr options) {
|
| + connected_ = true;
|
| + StopMessageLoop();
|
| + }
|
| +
|
| + scoped_refptr<SerialIoHandler> ReturnIoHandler() { return io_handler_; }
|
| +
|
| + void RunConnectTest(const std::string& path, bool expecting_success) {
|
| + if (!io_handler_)
|
| + io_handler_ = new TestSerialIoHandler;
|
| + mojo::InterfacePtr<serial::SerialService> service;
|
| + mojo::BindToProxy(
|
| + new SerialServiceImpl(
|
| + new SerialConnectionFactory(
|
| + base::Bind(&SerialServiceTest::ReturnIoHandler,
|
| + base::Unretained(this)),
|
| + base::MessageLoopProxy::current()),
|
| + scoped_ptr<SerialDeviceEnumerator>(new FakeSerialDeviceEnumerator)),
|
| + &service);
|
| + mojo::InterfacePtr<serial::Connection> connection;
|
| + mojo::InterfacePtr<serial::DataSink> sink;
|
| + mojo::InterfacePtr<serial::DataSource> source;
|
| + service->Connect(path,
|
| + serial::ConnectionOptions::New(),
|
| + mojo::Get(&connection),
|
| + mojo::Get(&sink),
|
| + mojo::Get(&source));
|
| + connection.set_error_handler(this);
|
| + expecting_error_ = !expecting_success;
|
| + connection->GetInfo(
|
| + base::Bind(&SerialServiceTest::OnGotInfo, base::Unretained(this)));
|
| + RunMessageLoop();
|
| + EXPECT_EQ(!expecting_success, connection.encountered_error());
|
| + EXPECT_EQ(expecting_success, connected_);
|
| + connection.reset();
|
| + }
|
|
|
| base::MessageLoop message_loop_;
|
| scoped_ptr<base::RunLoop> run_loop_;
|
| mojo::Array<serial::DeviceInfoPtr> devices_;
|
| scoped_refptr<TestSerialIoHandler> io_handler_;
|
| + bool connected_;
|
| bool expecting_error_;
|
| serial::ConnectionInfoPtr info_;
|
|
|
| @@ -94,56 +126,16 @@ TEST_F(SerialServiceTest, GetDevices) {
|
| }
|
|
|
| TEST_F(SerialServiceTest, Connect) {
|
| - mojo::InterfacePtr<serial::SerialService> service;
|
| - mojo::BindToProxy(
|
| - new SerialServiceImpl(
|
| - new SerialConnectionFactory(base::Bind(&TestSerialIoHandler::Create),
|
| - base::MessageLoopProxy::current()),
|
| - scoped_ptr<SerialDeviceEnumerator>(new FakeSerialDeviceEnumerator)),
|
| - &service);
|
| - service.set_error_handler(this);
|
| - mojo::InterfacePtr<serial::Connection> connection;
|
| - service->Connect(
|
| - "device", serial::ConnectionOptions::New(), mojo::Get(&connection));
|
| - connection.set_error_handler(this);
|
| - connection->GetInfo(
|
| - base::Bind(&SerialServiceTest::OnGotInfo, base::Unretained(this)));
|
| - RunMessageLoop();
|
| - connection.reset();
|
| + RunConnectTest("device", true);
|
| }
|
|
|
| TEST_F(SerialServiceTest, ConnectInvalidPath) {
|
| - mojo::InterfacePtr<serial::SerialService> service;
|
| - mojo::BindToProxy(
|
| - new SerialServiceImpl(
|
| - new SerialConnectionFactory(base::Bind(&TestSerialIoHandler::Create),
|
| - base::MessageLoopProxy::current()),
|
| - scoped_ptr<SerialDeviceEnumerator>(new FakeSerialDeviceEnumerator)),
|
| - &service);
|
| - mojo::InterfacePtr<serial::Connection> connection;
|
| - service->Connect(
|
| - "invalid_path", serial::ConnectionOptions::New(), mojo::Get(&connection));
|
| - connection.set_error_handler(this);
|
| - expecting_error_ = true;
|
| - RunMessageLoop();
|
| - EXPECT_TRUE(connection.encountered_error());
|
| + RunConnectTest("invalid_path", false);
|
| }
|
|
|
| TEST_F(SerialServiceTest, ConnectOpenFailed) {
|
| - mojo::InterfacePtr<serial::SerialService> service;
|
| - mojo::BindToProxy(
|
| - new SerialServiceImpl(
|
| - new SerialConnectionFactory(base::Bind(&FailToOpenIoHandler::Create),
|
| - base::MessageLoopProxy::current()),
|
| - scoped_ptr<SerialDeviceEnumerator>(new FakeSerialDeviceEnumerator)),
|
| - &service);
|
| - mojo::InterfacePtr<serial::Connection> connection;
|
| - service->Connect(
|
| - "device", serial::ConnectionOptions::New(), mojo::Get(&connection));
|
| - expecting_error_ = true;
|
| - connection.set_error_handler(this);
|
| - RunMessageLoop();
|
| - EXPECT_TRUE(connection.encountered_error());
|
| + io_handler_ = new FailToOpenIoHandler;
|
| + RunConnectTest("device", false);
|
| }
|
|
|
| } // namespace device
|
|
|