Index: device/bluetooth/test/bluetooth_test.h |
diff --git a/device/bluetooth/test/bluetooth_test.h b/device/bluetooth/test/bluetooth_test.h |
index e6ccc6c5b9ab58ca1d9866943cdd836f823557bb..a0066e92364282c9c78869f15941f7503f963701 100644 |
--- a/device/bluetooth/test/bluetooth_test.h |
+++ b/device/bluetooth/test/bluetooth_test.h |
@@ -29,6 +29,8 @@ class BluetoothDevice; |
// BluetoothTest. |
class BluetoothTestBase : public testing::Test { |
public: |
+ enum class Call { EXPECTED, NOT_EXPECTED }; |
+ |
static const std::string kTestAdapterName; |
static const std::string kTestAdapterAddress; |
@@ -46,10 +48,20 @@ class BluetoothTestBase : public testing::Test { |
BluetoothTestBase(); |
~BluetoothTestBase() override; |
+ // Checks that no unexpected calls have been made to callbacks. |
+ // Overrides of this method should always call the parent's class method. |
+ void TearDown() override; |
+ |
// Calls adapter_->StartDiscoverySessionWithFilter with Low Energy transport, |
- // and this fixture's callbacks. Then RunLoop().RunUntilIdle(). |
+ // and this fixture's callbacks expecting success. |
+ // Then RunLoop().RunUntilIdle(). |
void StartLowEnergyDiscoverySession(); |
+ // Calls adapter_->StartDiscoverySessionWithFilter with Low Energy transport, |
+ // and this fixture's callbacks expecting error. |
+ // Then RunLoop().RunUntilIdle(). |
+ void StartLowEnergyDiscoverySessionExpectedToFail(); |
+ |
// Check if Low Energy is available. On Mac, we require OS X >= 10.10. |
virtual bool PlatformSupportsLowEnergy() = 0; |
@@ -148,31 +160,38 @@ class BluetoothTestBase : public testing::Test { |
virtual void DeleteDevice(BluetoothDevice* device); |
// Callbacks that increment |callback_count_|, |error_callback_count_|: |
- void Callback(); |
- void DiscoverySessionCallback(scoped_ptr<BluetoothDiscoverySession>); |
- void GattConnectionCallback(scoped_ptr<BluetoothGattConnection>); |
- void NotifyCallback(scoped_ptr<BluetoothGattNotifySession>); |
- void ReadValueCallback(const std::vector<uint8>& value); |
- void ErrorCallback(); |
- void ConnectErrorCallback(enum BluetoothDevice::ConnectErrorCode); |
- void GattErrorCallback(BluetoothGattService::GattErrorCode); |
+ void Callback(Call expected); |
+ void DiscoverySessionCallback(Call expected, |
+ scoped_ptr<BluetoothDiscoverySession>); |
+ void GattConnectionCallback(Call expected, |
+ scoped_ptr<BluetoothGattConnection>); |
+ void NotifyCallback(Call expected, scoped_ptr<BluetoothGattNotifySession>); |
+ void ReadValueCallback(Call expected, const std::vector<uint8>& value); |
+ void ErrorCallback(Call expected); |
+ void ConnectErrorCallback(Call expected, |
+ enum BluetoothDevice::ConnectErrorCode); |
+ void GattErrorCallback(Call expected, BluetoothGattService::GattErrorCode); |
// Accessors to get callbacks bound to this fixture: |
- base::Closure GetCallback(); |
- BluetoothAdapter::DiscoverySessionCallback GetDiscoverySessionCallback(); |
- BluetoothDevice::GattConnectionCallback GetGattConnectionCallback(); |
- BluetoothGattCharacteristic::NotifySessionCallback GetNotifyCallback(); |
- BluetoothGattCharacteristic::ValueCallback GetReadValueCallback(); |
- BluetoothAdapter::ErrorCallback GetErrorCallback(); |
- BluetoothDevice::ConnectErrorCallback GetConnectErrorCallback(); |
+ base::Closure GetCallback(Call expected); |
+ BluetoothAdapter::DiscoverySessionCallback GetDiscoverySessionCallback( |
+ Call expected); |
+ BluetoothDevice::GattConnectionCallback GetGattConnectionCallback( |
+ Call expected); |
+ BluetoothGattCharacteristic::NotifySessionCallback GetNotifyCallback( |
+ Call expected); |
+ BluetoothGattCharacteristic::ValueCallback GetReadValueCallback( |
+ Call expected); |
+ BluetoothAdapter::ErrorCallback GetErrorCallback(Call expected); |
+ BluetoothDevice::ConnectErrorCallback GetConnectErrorCallback(Call expected); |
base::Callback<void(BluetoothGattService::GattErrorCode)> |
- GetGattErrorCallback(); |
+ GetGattErrorCallback(Call expected); |
// Reset all event count members to 0. |
void ResetEventCounts(); |
// A Message loop is required by some implementations that will PostTasks and |
- // by base::RunLoop().RunUntilIdle() use in this fixuture. |
+ // by base::RunLoop().RunUntilIdle() use in this fixture. |
base::MessageLoop message_loop_; |
scoped_refptr<BluetoothAdapter> adapter_; |
@@ -184,6 +203,7 @@ class BluetoothTestBase : public testing::Test { |
std::vector<uint8> last_read_value_; |
std::vector<uint8> last_write_value_; |
BluetoothGattService::GattErrorCode last_gatt_error_code_; |
+ |
int callback_count_ = 0; |
int error_callback_count_ = 0; |
int gatt_connection_attempts_ = 0; |
@@ -192,6 +212,16 @@ class BluetoothTestBase : public testing::Test { |
int gatt_notify_characteristic_attempts_ = 0; |
int gatt_read_characteristic_attempts_ = 0; |
int gatt_write_characteristic_attempts_ = 0; |
+ |
+ // The following values are used to make sure the correct callbacks |
+ // have been called. They are not reset when calling ResetEventCounts(). |
+ int expected_success_callback_calls_ = 0; |
+ int expected_error_callback_calls_ = 0; |
+ int actual_success_callback_calls_ = 0; |
+ int actual_error_callback_calls_ = 0; |
+ bool unexpected_success_callback_ = false; |
+ bool unexpected_error_callback_ = false; |
+ |
base::WeakPtrFactory<BluetoothTestBase> weak_factory_; |
}; |