| // Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "mist/usb_modem_switch_context.h" |
| |
| #include <gmock/gmock.h> |
| #include <gtest/gtest.h> |
| |
| #include "mist/mock_config_loader.h" |
| #include "mist/mock_context.h" |
| #include "mist/mock_udev.h" |
| #include "mist/mock_udev_device.h" |
| #include "mist/proto_bindings/usb_modem_info.pb.h" |
| |
| using testing::Return; |
| using testing::_; |
| |
| namespace mist { |
| |
| namespace { |
| |
| const char kFakeDeviceSysPath[] = "/sys/devices/fake/1"; |
| const uint16_t kFakeDeviceBusNumber = 1; |
| const char kFakeDeviceBusNumberString[] = "1"; |
| const uint16_t kFakeDeviceDeviceAddress = 2; |
| const char kFakeDeviceDeviceAddressString[] = "2"; |
| const uint16_t kFakeDeviceVendorId = 0x0123; |
| const char kFakeDeviceVendorIdString[] = "0123"; |
| const uint16_t kFakeDeviceProductId = 0x4567; |
| const char kFakeDeviceProductIdString[] = "4567"; |
| |
| } // namespace |
| |
| TEST(UsbModemSwitchContextTest, InitializeFromSysPath) { |
| MockContext context; |
| EXPECT_TRUE(context.Initialize()); |
| |
| MockUdevDevice* device = new MockUdevDevice(); |
| // Ownership of |device| is transferred. |
| EXPECT_CALL(*context.GetMockUdev(), CreateDeviceFromSysPath(_)) |
| .WillOnce(Return(device)); |
| EXPECT_CALL(*device, GetSysPath()).WillRepeatedly(Return(kFakeDeviceSysPath)); |
| EXPECT_CALL(*device, GetSysAttributeValue(_)) |
| .WillOnce(Return(kFakeDeviceBusNumberString)) |
| .WillOnce(Return(kFakeDeviceDeviceAddressString)) |
| .WillOnce(Return(kFakeDeviceVendorIdString)) |
| .WillOnce(Return(kFakeDeviceProductIdString)); |
| |
| UsbModemInfo modem_info; |
| EXPECT_CALL(*context.GetMockConfigLoader(), |
| GetUsbModemInfo(kFakeDeviceVendorId, kFakeDeviceProductId)) |
| .WillOnce(Return(&modem_info)); |
| |
| UsbModemSwitchContext switch_context; |
| EXPECT_TRUE( |
| switch_context.InitializeFromSysPath(&context, kFakeDeviceSysPath)); |
| EXPECT_EQ(kFakeDeviceSysPath, switch_context.sys_path()); |
| EXPECT_EQ(kFakeDeviceBusNumber, switch_context.bus_number()); |
| EXPECT_EQ(kFakeDeviceDeviceAddress, switch_context.device_address()); |
| EXPECT_EQ(kFakeDeviceVendorId, switch_context.vendor_id()); |
| EXPECT_EQ(kFakeDeviceProductId, switch_context.product_id()); |
| EXPECT_EQ(&modem_info, switch_context.modem_info()); |
| } |
| |
| } // namespace mist |