Chromium Code Reviews| Index: device/bluetooth/bluez/bluetooth_bluez_unittest.cc |
| diff --git a/device/bluetooth/bluez/bluetooth_bluez_unittest.cc b/device/bluetooth/bluez/bluetooth_bluez_unittest.cc |
| index c2f0fa1bb3b010df85dd0ba7fab1e6bd69a53261..8ec0fa39262fafade2a2058a58a1412f93d666e3 100644 |
| --- a/device/bluetooth/bluez/bluetooth_bluez_unittest.cc |
| +++ b/device/bluetooth/bluez/bluetooth_bluez_unittest.cc |
| @@ -2503,8 +2503,43 @@ TEST_F(BluetoothBlueZTest, DeviceInquiryRSSIInvalidated) { |
| EXPECT_EQ(1, observer.device_changed_count()); |
| EXPECT_EQ(devices[idx], observer.last_device()); |
| - int unknown_power = BluetoothDevice::kUnknownPower; |
| - EXPECT_EQ(unknown_power, devices[idx]->GetInquiryRSSI()); |
| + EXPECT_TRUE(devices[idx]->GetInquiryRSSI() == BluetoothDevice::kUnknownRSSI); |
| +} |
| + |
| +TEST_F(BluetoothBlueZTest, DeviceInquiryRSSIOutOfBounds) { |
| + // RSSI should be a int8 but luez returns a int16 because DBus doesn't |
|
scheib
2016/05/04 01:18:37
bluez
^
ortuno
2016/05/04 16:44:11
Done.
|
| + // support int8 even though Bluez uses a int8 internally. This test |
| + // makes sure we handle values outside of the int8 range. |
| + GetAdapter(); |
| + |
| + BluetoothAdapter::DeviceList devices = adapter_->GetDevices(); |
| + ASSERT_EQ(2U, devices.size()); |
| + |
| + int idx = GetDeviceIndexByAddress( |
| + devices, bluez::FakeBluetoothDeviceClient::kPairedDeviceAddress); |
| + ASSERT_NE(-1, idx); |
| + |
| + bluez::FakeBluetoothDeviceClient::Properties* properties = |
| + fake_bluetooth_device_client_->GetProperties(dbus::ObjectPath( |
| + bluez::FakeBluetoothDeviceClient::kPairedDevicePath)); |
| + |
| + properties->rssi.set_valid(true); |
| + |
| + // Small invalid value |
| + properties->rssi.ReplaceValue(-129); |
| + EXPECT_TRUE(devices[idx]->GetInquiryRSSI() == BluetoothDevice::kUnknownRSSI); |
| + |
| + // Small valid value |
| + properties->rssi.ReplaceValue(-128); |
| + EXPECT_EQ(-128, devices[idx]->GetInquiryRSSI()); |
| + |
| + // Large valid value. (127 is used for BluetoothDevice::kUnknownRSSI). |
| + properties->rssi.ReplaceValue(126); |
| + EXPECT_EQ(126, devices[idx]->GetInquiryRSSI()); |
| + |
| + // Large invalid value |
| + properties->rssi.ReplaceValue(128); |
| + EXPECT_TRUE(devices[idx]->GetInquiryRSSI() == BluetoothDevice::kUnknownRSSI); |
|
scheib
2016/05/04 01:18:37
EXPECT_EQ instead of _TRUE. (and elsewhere)
ortuno
2016/05/04 16:44:12
That's what I tried to do the first time but I get
|
| } |
| TEST_F(BluetoothBlueZTest, DeviceInquiryTxPowerInvalidated) { |
| @@ -2540,8 +2575,46 @@ TEST_F(BluetoothBlueZTest, DeviceInquiryTxPowerInvalidated) { |
| EXPECT_EQ(1, observer.device_changed_count()); |
| EXPECT_EQ(devices[idx], observer.last_device()); |
| - int unknown_power = BluetoothDevice::kUnknownPower; |
| - EXPECT_EQ(unknown_power, devices[idx]->GetInquiryTxPower()); |
| + EXPECT_TRUE(devices[idx]->GetInquiryTxPower() == |
| + BluetoothDevice::kUnknownTxPower); |
| +} |
| + |
| +TEST_F(BluetoothBlueZTest, DeviceInquiryTxPowerOutOfBounds) { |
| + // TxPower should be a int8 but Bluez returns a int16 because DBus doesn't |
| + // support int8 even though Bluez uses a int8 internally. This test |
| + // makes sure we handle values outside of the int8 range. |
| + GetAdapter(); |
| + |
| + BluetoothAdapter::DeviceList devices = adapter_->GetDevices(); |
| + ASSERT_EQ(2U, devices.size()); |
| + |
| + int idx = GetDeviceIndexByAddress( |
| + devices, bluez::FakeBluetoothDeviceClient::kPairedDeviceAddress); |
| + ASSERT_NE(-1, idx); |
| + |
| + bluez::FakeBluetoothDeviceClient::Properties* properties = |
| + fake_bluetooth_device_client_->GetProperties(dbus::ObjectPath( |
| + bluez::FakeBluetoothDeviceClient::kPairedDevicePath)); |
| + |
| + properties->tx_power.set_valid(true); |
| + |
| + // Small invalid value |
| + properties->tx_power.ReplaceValue(-129); |
| + EXPECT_TRUE(devices[idx]->GetInquiryTxPower() == |
| + BluetoothDevice::kUnknownTxPower); |
| + |
| + // Small valid value |
| + properties->tx_power.ReplaceValue(-128); |
| + EXPECT_EQ(-128, devices[idx]->GetInquiryTxPower()); |
| + |
| + // Large valid value. (127 is used for BluetoothDevice::kUnknownTxPower). |
|
scheib
2016/05/04 01:18:37
What does Bluez use for UnknownTxPower? This patch
ortuno
2016/05/04 16:44:12
In bluez, if a property is not present property.is
|
| + properties->tx_power.ReplaceValue(126); |
| + EXPECT_EQ(126, devices[idx]->GetInquiryTxPower()); |
| + |
| + // Large invalid value |
| + properties->tx_power.ReplaceValue(128); |
| + EXPECT_TRUE(devices[idx]->GetInquiryTxPower() == |
| + BluetoothDevice::kUnknownTxPower); |
| } |
| TEST_F(BluetoothBlueZTest, ForgetDevice) { |
| @@ -4132,14 +4205,14 @@ TEST_F(BluetoothBlueZTest, GetConnectionInfoForDisconnectedDevice) { |
| bluez::FakeBluetoothDeviceClient::kPairedDeviceAddress); |
| // Calling GetConnectionInfo for an unconnected device should return a result |
| - // in which all fields are filled with BluetoothDevice::kUnknownPower. |
| + // in which all fields are filled with BluetoothDevice::kUnknownRSSI and |
| + // BluetoothDevice::kUnknownTxPower. |
| BluetoothDevice::ConnectionInfo conn_info(0, 0, 0); |
| device->GetConnectionInfo(base::Bind(&SaveConnectionInfo, &conn_info)); |
| - int unknown_power = BluetoothDevice::kUnknownPower; |
| - EXPECT_NE(0, unknown_power); |
| - EXPECT_EQ(unknown_power, conn_info.rssi); |
| - EXPECT_EQ(unknown_power, conn_info.transmit_power); |
| - EXPECT_EQ(unknown_power, conn_info.max_transmit_power); |
| + |
| + EXPECT_TRUE(conn_info.rssi == BluetoothDevice::kUnknownRSSI); |
| + EXPECT_TRUE(conn_info.transmit_power == BluetoothDevice::kUnknownTxPower); |
| + EXPECT_TRUE(conn_info.max_transmit_power == BluetoothDevice::kUnknownTxPower); |
| } |
| TEST_F(BluetoothBlueZTest, GetConnectionInfoForConnectedDevice) { |