Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef DEVICE_BLUETOOTH_TEST_BLUETOOTH_TEST_H_ | 5 #ifndef DEVICE_BLUETOOTH_TEST_BLUETOOTH_TEST_H_ |
| 6 #define DEVICE_BLUETOOTH_TEST_BLUETOOTH_TEST_H_ | 6 #define DEVICE_BLUETOOTH_TEST_BLUETOOTH_TEST_H_ |
| 7 | 7 |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 class BluetoothAdapter; | 22 class BluetoothAdapter; |
| 23 class BluetoothDevice; | 23 class BluetoothDevice; |
| 24 | 24 |
| 25 // A test fixture for Bluetooth that abstracts platform specifics for creating | 25 // A test fixture for Bluetooth that abstracts platform specifics for creating |
| 26 // and controlling fake low level objects. | 26 // and controlling fake low level objects. |
| 27 // | 27 // |
| 28 // Subclasses on each platform implement this, and are then typedef-ed to | 28 // Subclasses on each platform implement this, and are then typedef-ed to |
| 29 // BluetoothTest. | 29 // BluetoothTest. |
| 30 class BluetoothTestBase : public testing::Test { | 30 class BluetoothTestBase : public testing::Test { |
| 31 public: | 31 public: |
| 32 enum class Call { EXPECTED, NOT_EXPECTED }; | |
| 33 | |
| 32 static const std::string kTestAdapterName; | 34 static const std::string kTestAdapterName; |
| 33 static const std::string kTestAdapterAddress; | 35 static const std::string kTestAdapterAddress; |
| 34 | 36 |
| 35 static const std::string kTestDeviceName; | 37 static const std::string kTestDeviceName; |
| 36 static const std::string kTestDeviceNameEmpty; | 38 static const std::string kTestDeviceNameEmpty; |
| 37 | 39 |
| 38 static const std::string kTestDeviceAddress1; | 40 static const std::string kTestDeviceAddress1; |
| 39 static const std::string kTestDeviceAddress2; | 41 static const std::string kTestDeviceAddress2; |
| 40 | 42 |
| 41 static const std::string kTestUUIDGenericAccess; | 43 static const std::string kTestUUIDGenericAccess; |
| 42 static const std::string kTestUUIDGenericAttribute; | 44 static const std::string kTestUUIDGenericAttribute; |
| 43 static const std::string kTestUUIDImmediateAlert; | 45 static const std::string kTestUUIDImmediateAlert; |
| 44 static const std::string kTestUUIDLinkLoss; | 46 static const std::string kTestUUIDLinkLoss; |
| 45 | 47 |
| 46 BluetoothTestBase(); | 48 BluetoothTestBase(); |
| 47 ~BluetoothTestBase() override; | 49 ~BluetoothTestBase() override; |
| 48 | 50 |
| 51 // Checks that no unexpected calls have been made to callbacks. | |
| 52 // Overrides of this method should always call the parent's class method. | |
| 53 void TearDown() override; | |
| 54 | |
| 49 // Calls adapter_->StartDiscoverySessionWithFilter with Low Energy transport, | 55 // Calls adapter_->StartDiscoverySessionWithFilter with Low Energy transport, |
| 50 // and this fixture's callbacks. Then RunLoop().RunUntilIdle(). | 56 // and this fixture's callbacks expecting success. |
| 57 // Then RunLoop().RunUntilIdle(). | |
| 51 void StartLowEnergyDiscoverySession(); | 58 void StartLowEnergyDiscoverySession(); |
| 52 | 59 |
| 60 // Calls adapter_->StartDiscoverySessionWithFilter with Low Energy transport, | |
| 61 // and this fixture's callbacks expecting error. | |
| 62 // Then RunLoop().RunUntilIdle(). | |
| 63 void StartLowEnergyDiscoverySessionExpectedToFail(); | |
| 64 | |
| 53 // Check if Low Energy is available. On Mac, we require OS X >= 10.10. | 65 // Check if Low Energy is available. On Mac, we require OS X >= 10.10. |
| 54 virtual bool PlatformSupportsLowEnergy() = 0; | 66 virtual bool PlatformSupportsLowEnergy() = 0; |
| 55 | 67 |
| 56 // Initializes the BluetoothAdapter |adapter_| with the system adapter. | 68 // Initializes the BluetoothAdapter |adapter_| with the system adapter. |
| 57 virtual void InitWithDefaultAdapter(){}; | 69 virtual void InitWithDefaultAdapter(){}; |
| 58 | 70 |
| 59 // Initializes the BluetoothAdapter |adapter_| with the system adapter forced | 71 // Initializes the BluetoothAdapter |adapter_| with the system adapter forced |
| 60 // to be ignored as if it did not exist. This enables tests for when an | 72 // to be ignored as if it did not exist. This enables tests for when an |
| 61 // adapter is not present on the system. | 73 // adapter is not present on the system. |
| 62 virtual void InitWithoutDefaultAdapter(){}; | 74 virtual void InitWithoutDefaultAdapter(){}; |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 141 | 153 |
| 142 // Simulates a Characteristic Write operation failing synchronously once for | 154 // Simulates a Characteristic Write operation failing synchronously once for |
| 143 // an unknown reason. | 155 // an unknown reason. |
| 144 virtual void SimulateGattCharacteristicWriteWillFailSynchronouslyOnce( | 156 virtual void SimulateGattCharacteristicWriteWillFailSynchronouslyOnce( |
| 145 BluetoothGattCharacteristic* characteristic) {} | 157 BluetoothGattCharacteristic* characteristic) {} |
| 146 | 158 |
| 147 // Remove the device from the adapter and delete it. | 159 // Remove the device from the adapter and delete it. |
| 148 virtual void DeleteDevice(BluetoothDevice* device); | 160 virtual void DeleteDevice(BluetoothDevice* device); |
| 149 | 161 |
| 150 // Callbacks that increment |callback_count_|, |error_callback_count_|: | 162 // Callbacks that increment |callback_count_|, |error_callback_count_|: |
| 151 void Callback(); | 163 void Callback(Call expected); |
| 152 void DiscoverySessionCallback(scoped_ptr<BluetoothDiscoverySession>); | 164 void DiscoverySessionCallback(Call expected, |
| 153 void GattConnectionCallback(scoped_ptr<BluetoothGattConnection>); | 165 scoped_ptr<BluetoothDiscoverySession>); |
| 154 void NotifyCallback(scoped_ptr<BluetoothGattNotifySession>); | 166 void GattConnectionCallback(Call expected, |
| 155 void ReadValueCallback(const std::vector<uint8>& value); | 167 scoped_ptr<BluetoothGattConnection>); |
| 156 void ErrorCallback(); | 168 void NotifyCallback(Call expected, scoped_ptr<BluetoothGattNotifySession>); |
| 157 void ConnectErrorCallback(enum BluetoothDevice::ConnectErrorCode); | 169 void ReadValueCallback(Call expected, const std::vector<uint8>& value); |
| 158 void GattErrorCallback(BluetoothGattService::GattErrorCode); | 170 void ErrorCallback(Call expected); |
| 171 void ConnectErrorCallback(Call expected, | |
| 172 enum BluetoothDevice::ConnectErrorCode); | |
| 173 void GattErrorCallback(Call expected, BluetoothGattService::GattErrorCode); | |
| 159 | 174 |
| 160 // Accessors to get callbacks bound to this fixture: | 175 // Accessors to get callbacks bound to this fixture: |
| 161 base::Closure GetCallback(); | 176 base::Closure GetCallback(Call expected); |
| 162 BluetoothAdapter::DiscoverySessionCallback GetDiscoverySessionCallback(); | 177 BluetoothAdapter::DiscoverySessionCallback GetDiscoverySessionCallback( |
| 163 BluetoothDevice::GattConnectionCallback GetGattConnectionCallback(); | 178 Call expected); |
| 164 BluetoothGattCharacteristic::NotifySessionCallback GetNotifyCallback(); | 179 BluetoothDevice::GattConnectionCallback GetGattConnectionCallback( |
| 165 BluetoothGattCharacteristic::ValueCallback GetReadValueCallback(); | 180 Call expected); |
| 166 BluetoothAdapter::ErrorCallback GetErrorCallback(); | 181 BluetoothGattCharacteristic::NotifySessionCallback GetNotifyCallback( |
| 167 BluetoothDevice::ConnectErrorCallback GetConnectErrorCallback(); | 182 Call expected); |
| 183 BluetoothGattCharacteristic::ValueCallback GetReadValueCallback( | |
| 184 Call expected); | |
| 185 BluetoothAdapter::ErrorCallback GetErrorCallback(Call expected); | |
| 186 BluetoothDevice::ConnectErrorCallback GetConnectErrorCallback(Call expected); | |
| 168 base::Callback<void(BluetoothGattService::GattErrorCode)> | 187 base::Callback<void(BluetoothGattService::GattErrorCode)> |
| 169 GetGattErrorCallback(); | 188 GetGattErrorCallback(Call expected); |
| 170 | 189 |
| 171 // Reset all event count members to 0. | 190 // Reset all event count members to 0. |
| 172 void ResetEventCounts(); | 191 void ResetEventCounts(); |
| 173 | 192 |
| 174 // A Message loop is required by some implementations that will PostTasks and | 193 // A Message loop is required by some implementations that will PostTasks and |
| 175 // by base::RunLoop().RunUntilIdle() use in this fixuture. | 194 // by base::RunLoop().RunUntilIdle() use in this fixture. |
| 176 base::MessageLoop message_loop_; | 195 base::MessageLoop message_loop_; |
| 177 | 196 |
| 178 scoped_refptr<BluetoothAdapter> adapter_; | 197 scoped_refptr<BluetoothAdapter> adapter_; |
| 179 ScopedVector<BluetoothDiscoverySession> discovery_sessions_; | 198 ScopedVector<BluetoothDiscoverySession> discovery_sessions_; |
| 180 ScopedVector<BluetoothGattConnection> gatt_connections_; | 199 ScopedVector<BluetoothGattConnection> gatt_connections_; |
| 181 enum BluetoothDevice::ConnectErrorCode last_connect_error_code_ = | 200 enum BluetoothDevice::ConnectErrorCode last_connect_error_code_ = |
| 182 BluetoothDevice::ERROR_UNKNOWN; | 201 BluetoothDevice::ERROR_UNKNOWN; |
| 183 ScopedVector<BluetoothGattNotifySession> notify_sessions_; | 202 ScopedVector<BluetoothGattNotifySession> notify_sessions_; |
| 184 std::vector<uint8> last_read_value_; | 203 std::vector<uint8> last_read_value_; |
| 185 std::vector<uint8> last_write_value_; | 204 std::vector<uint8> last_write_value_; |
| 186 BluetoothGattService::GattErrorCode last_gatt_error_code_; | 205 BluetoothGattService::GattErrorCode last_gatt_error_code_; |
| 206 | |
| 187 int callback_count_ = 0; | 207 int callback_count_ = 0; |
| 188 int error_callback_count_ = 0; | 208 int error_callback_count_ = 0; |
| 189 int gatt_connection_attempts_ = 0; | 209 int gatt_connection_attempts_ = 0; |
| 190 int gatt_disconnection_attempts_ = 0; | 210 int gatt_disconnection_attempts_ = 0; |
| 191 int gatt_discovery_attempts_ = 0; | 211 int gatt_discovery_attempts_ = 0; |
| 192 int gatt_notify_characteristic_attempts_ = 0; | 212 int gatt_notify_characteristic_attempts_ = 0; |
| 193 int gatt_read_characteristic_attempts_ = 0; | 213 int gatt_read_characteristic_attempts_ = 0; |
| 194 int gatt_write_characteristic_attempts_ = 0; | 214 int gatt_write_characteristic_attempts_ = 0; |
| 215 | |
| 216 // The following values are used to make sure the correct callbacks | |
| 217 // have been called. They are not reset when calling ResetEventCounts(). | |
| 218 int expected_success_callback_calls_ = 0; | |
| 219 int expected_error_callback_calls_ = 0; | |
| 220 int actual_success_callback_calls_ = 0; | |
| 221 int actual_error_callback_calls_ = 0; | |
|
ortuno
2015/11/21 01:12:49
Not sure about the name here. Maybe expected_expec
scheib
2015/11/21 05:40:22
These names seem fine to me.
expected_expected is
| |
| 222 bool unexpected_success_callback_ = false; | |
| 223 bool unexpected_error_callback_ = false; | |
| 224 | |
| 195 base::WeakPtrFactory<BluetoothTestBase> weak_factory_; | 225 base::WeakPtrFactory<BluetoothTestBase> weak_factory_; |
| 196 }; | 226 }; |
| 197 | 227 |
| 198 } // namespace device | 228 } // namespace device |
| 199 | 229 |
| 200 #endif // DEVICE_BLUETOOTH_TEST_BLUETOOTH_TEST_H_ | 230 #endif // DEVICE_BLUETOOTH_TEST_BLUETOOTH_TEST_H_ |
| OLD | NEW |