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 |