Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1288)

Unified Diff: components/arc/bluetooth/arc_bluetooth_bridge_unittest.cc

Issue 2078263002: Example Bluetooth ARC++ test changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@arc_tests
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/arc/bluetooth/arc_bluetooth_bridge.cc ('k') | components/arc/test/fake_arc_bridge_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/arc/bluetooth/arc_bluetooth_bridge_unittest.cc
diff --git a/components/arc/bluetooth/arc_bluetooth_bridge_unittest.cc b/components/arc/bluetooth/arc_bluetooth_bridge_unittest.cc
index b4c9f80d82e5e5a4ab669c0d7515b5b460d465f6..8c2cfaeb65c3b1d4d95b3ad110979e0e2a28dfc3 100644
--- a/components/arc/bluetooth/arc_bluetooth_bridge_unittest.cc
+++ b/components/arc/bluetooth/arc_bluetooth_bridge_unittest.cc
@@ -7,10 +7,15 @@
#include <string>
#include <vector>
+#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
#include "components/arc/bluetooth/bluetooth_type_converters.h"
#include "components/arc/common/bluetooth.mojom.h"
#include "components/arc/test/fake_arc_bridge_service.h"
#include "components/arc/test/fake_bluetooth_instance.h"
+#include "device/bluetooth/dbus/bluez_dbus_manager.h"
+#include "device/bluetooth/dbus/fake_bluetooth_adapter_client.h"
+#include "device/bluetooth/dbus/fake_bluetooth_device_client.h"
#include "device/bluetooth/test/mock_bluetooth_adapter.h"
#include "device/bluetooth/test/mock_bluetooth_device.h"
#include "device/bluetooth/test/mock_bluetooth_gatt_characteristic.h"
@@ -26,124 +31,99 @@ namespace {
const char kAddressStr[] = "1A:2B:3C:4D:5E:6F";
const char kDeviceName[] = "DeviceName";
-const uint32_t kDeviceClass = 0x2580;
-const int16_t kDeviceRssi = -45;
-const char kServiceID[] = "/org/bluez/hci0/dev_1A_2B_3C_4D_5E_6F/service180f";
-const char kServiceUUID[] = "180f";
-const char kCharID[] =
- "/org/bluez/hci0/dev_1A_2B_3C_4D_5E_6F/service180f/char2a19";
-const char kCharUUID[] = "2a19";
+const char kServiceUUID[] = "0000180f-0000-1000-8000-00805f9b34fb";
+const char kCharUUID[] = "00002a19-0000-1000-8000-00805f9b34fb";
const uint16_t kCharUUIDInt = 0x2a19;
-class FakeArcBluetoothBridge : public ArcBluetoothBridge {
- public:
- FakeArcBluetoothBridge(ArcBridgeService* bridge_service,
- device::MockBluetoothAdapter* adapter)
- : ArcBluetoothBridge(bridge_service, true /* test_flag */) {
- SetAdapterForTest(adapter);
- }
-
- void OnAdapterInitialized(scoped_refptr<device::BluetoothAdapter> adapter) {}
-};
-
} // namespace
class ArcBluetoothBridgeTest : public testing::Test {
public:
- ArcBluetoothBridgeTest() {}
+ ArcBluetoothBridgeTest()
+ : fake_arc_bridge_service_(nullptr),
+ fake_bluetooth_instance_(nullptr),
+ arc_bluetooth_bridge_(nullptr),
+ fake_bluetooth_device_client_(nullptr) {}
protected:
+ void AddTestDevice() {
+ device_uuids_.emplace_back(kServiceUUID);
+ device_uuids_.emplace_back(kCharUUID);
+
+ fake_bluetooth_device_client_->CreateTestDevice(
+ dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
+ kDeviceName, kDeviceName, kAddressStr, device_uuids_);
+
+ remote_addr_ = mojom::BluetoothAddress::From(std::string(kAddressStr));
+
+ service_id_ = mojom::BluetoothGattServiceID::New();
+ service_id_->is_primary = true;
+ service_id_->id = mojom::BluetoothGattID::New();
+ service_id_->id->inst_id = 0;
+ service_id_->id->uuid =
+ mojom::BluetoothUUID::From(device::BluetoothUUID(kServiceUUID));
+
+ char_id_ = mojom::BluetoothGattID::New();
+ char_id_->inst_id = 0;
+ char_id_->uuid =
+ mojom::BluetoothUUID::From(device::BluetoothUUID(kCharUUID));
+ };
+
FakeArcBridgeService* fake_arc_bridge_service_;
- FakeArcBluetoothBridge* fake_arc_bluetooth_bridge_;
- FakeBluetoothInstance* fake_bluetooth_instance;
- device::MockBluetoothAdapter* fake_adapter_;
- device::MockBluetoothDevice* fake_device_;
- device::MockBluetoothGattService* fake_service_;
- device::MockBluetoothGattCharacteristic* fake_char_;
- std::vector<device::BluetoothUUID> device_uuids_;
-
- mojom::BluetoothAddressPtr remote_addr;
- mojom::BluetoothGattServiceIDPtr service_id;
- mojom::BluetoothGattIDPtr char_id;
+ FakeBluetoothInstance* fake_bluetooth_instance_;
+ ArcBluetoothBridge* arc_bluetooth_bridge_;
+ scoped_refptr<device::BluetoothAdapter> adapter_;
+ std::vector<std::string> device_uuids_;
+
+ mojom::BluetoothAddressPtr remote_addr_;
+ mojom::BluetoothGattServiceIDPtr service_id_;
+ mojom::BluetoothGattIDPtr char_id_;
private:
+ void OnAdapterInitialized(scoped_refptr<device::BluetoothAdapter> adapter) {
+ adapter_ = adapter;
+ get_adapter_run_loop_.Quit();
+ }
+
void SetUp() override {
- fake_arc_bridge_service_ = new FakeArcBridgeService();
+ std::unique_ptr<bluez::BluezDBusManagerSetter> dbus_setter =
+ bluez::BluezDBusManager::GetSetterForTesting();
+ fake_bluetooth_device_client_ = new bluez::FakeBluetoothDeviceClient;
+ fake_bluetooth_device_client_->RemoveAllDevices();
+ dbus_setter->SetBluetoothDeviceClient(
+ std::unique_ptr<bluez::BluetoothDeviceClient>(
+ fake_bluetooth_device_client_));
- fake_adapter_ = new testing::NiceMock<device::MockBluetoothAdapter>();
- fake_arc_bluetooth_bridge_ =
- new FakeArcBluetoothBridge(fake_arc_bridge_service_, fake_adapter_);
-
- fake_device_ = new testing::NiceMock<device::MockBluetoothDevice>(
- fake_adapter_, 0 /* bluetooth_class */, kDeviceName, kAddressStr,
- false /* paired */, false /* connected */);
- ON_CALL(*fake_device_, GetBluetoothClass())
- .WillByDefault(testing::Return(kDeviceClass));
- ON_CALL(*fake_device_, GetInquiryRSSI())
- .WillByDefault(testing::Return(kDeviceRssi));
-
- device_uuids_.emplace_back(device::BluetoothUUID(kServiceUUID));
- device_uuids_.emplace_back(device::BluetoothUUID(kCharUUID));
- ON_CALL(*fake_device_, GetUUIDs())
- .WillByDefault(testing::Return(device_uuids_));
-
- fake_adapter_->AddMockDevice(base::WrapUnique(fake_device_));
- ON_CALL(*fake_adapter_, GetDevices())
- .WillByDefault(testing::Return(fake_adapter_->GetConstMockDevices()));
- ON_CALL(*fake_adapter_, GetDevice("1A:2B:3C:4D:5E:6F"))
- .WillByDefault(testing::Return(fake_device_));
-
- fake_service_ = new testing::NiceMock<device::MockBluetoothGattService>(
- fake_device_, kServiceID, device::BluetoothUUID(kServiceUUID),
- true /* is_primary */, true /* is_local */);
- fake_device_->AddMockService(base::WrapUnique(fake_service_));
- ON_CALL(*fake_device_, GetGattServices())
- .WillByDefault(testing::Return(fake_device_->GetMockServices()));
-
- fake_char_ = new testing::NiceMock<device::MockBluetoothGattCharacteristic>(
- fake_service_, kCharID, device::BluetoothUUID(kCharUUID),
- true /*is_local*/, device::BluetoothGattCharacteristic::PROPERTY_READ,
- device::BluetoothGattCharacteristic::PERMISSION_READ);
- fake_service_->AddMockCharacteristic(base::WrapUnique(fake_char_));
- ON_CALL(*fake_service_, GetCharacteristics())
- .WillByDefault(
- testing::Return(fake_service_->GetMockCharacteristics()));
-
- remote_addr = mojom::BluetoothAddress::From(std::string(kAddressStr));
-
- service_id = mojom::BluetoothGattServiceID::New();
- service_id->is_primary = true;
- service_id->id = mojom::BluetoothGattID::New();
- service_id->id->inst_id = 0;
- service_id->id->uuid =
- mojom::BluetoothUUID::From(device::BluetoothUUID(kServiceUUID));
+ fake_arc_bridge_service_ = new FakeArcBridgeService();
+ fake_bluetooth_instance_ = static_cast<FakeBluetoothInstance*>(
+ fake_arc_bridge_service_->bluetooth_instance());
- char_id = mojom::BluetoothGattID::New();
- char_id->inst_id = 0;
- char_id->uuid =
- mojom::BluetoothUUID::From(device::BluetoothUUID(kCharUUID));
+ arc_bluetooth_bridge_ = new ArcBluetoothBridge(fake_arc_bridge_service_);
- mojom::BluetoothInstancePtr bluetooth_instance_ptr;
- fake_bluetooth_instance = new FakeBluetoothInstance();
- fake_arc_bluetooth_bridge_->SetBluetoothInstanceForTest(
- fake_bluetooth_instance);
+ device::BluetoothAdapterFactory::GetAdapter(base::Bind(
+ &ArcBluetoothBridgeTest::OnAdapterInitialized, base::Unretained(this)));
+ // We will quit the loop once we get the adapter.
+ get_adapter_run_loop_.Run();
}
void TearDown() override {
- fake_arc_bluetooth_bridge_->SetAdapterForTest(nullptr);
- fake_arc_bluetooth_bridge_->SetBluetoothInstanceForTest(nullptr);
+ delete arc_bluetooth_bridge_;
delete fake_arc_bridge_service_;
}
+
+ base::MessageLoop message_loop_;
+ base::RunLoop get_adapter_run_loop_;
+ bluez::FakeBluetoothDeviceClient* fake_bluetooth_device_client_;
};
// Invoke OnDiscoveryStarted to send cached device to BT instance,
// and check correctness of the device properties sent via arc bridge.
TEST_F(ArcBluetoothBridgeTest, DeviceFound) {
- fake_arc_bluetooth_bridge_->OnDiscoveryStarted(nullptr);
-
- EXPECT_EQ((size_t)1, fake_bluetooth_instance->device_found_data().size());
+ AddTestDevice();
+ arc_bluetooth_bridge_->OnDiscoveryStarted(nullptr);
+ EXPECT_EQ((size_t)1, fake_bluetooth_instance_->device_found_data().size());
const mojo::Array<mojom::BluetoothPropertyPtr>& prop =
- fake_bluetooth_instance->device_found_data().back();
+ fake_bluetooth_instance_->device_found_data().back();
EXPECT_EQ((size_t)7, prop.size());
EXPECT_TRUE(prop[0]->is_bdname());
@@ -151,37 +131,41 @@ TEST_F(ArcBluetoothBridgeTest, DeviceFound) {
EXPECT_TRUE(prop[1]->is_bdaddr());
EXPECT_EQ(std::string(kAddressStr), prop[1]->get_bdaddr()->To<std::string>());
EXPECT_TRUE(prop[2]->is_uuids());
- EXPECT_EQ(device_uuids_,
- prop[2]->get_uuids().To<std::vector<device::BluetoothUUID>>());
+ EXPECT_EQ(
+ device_uuids_[0],
+ prop[2]->get_uuids().To<std::vector<device::BluetoothUUID>>()[0].value());
+ EXPECT_EQ(
+ device_uuids_[1],
+ prop[2]->get_uuids().To<std::vector<device::BluetoothUUID>>()[1].value());
EXPECT_TRUE(prop[3]->is_device_class());
- EXPECT_EQ(kDeviceClass, prop[3]->get_device_class());
EXPECT_TRUE(prop[4]->is_device_type());
EXPECT_EQ(mojom::BluetoothDeviceType::DUAL, prop[4]->get_device_type());
EXPECT_TRUE(prop[5]->is_remote_friendly_name());
EXPECT_EQ(std::string(kDeviceName), prop[5]->get_remote_friendly_name());
EXPECT_TRUE(prop[6]->is_remote_rssi());
- EXPECT_EQ(kDeviceRssi, prop[6]->get_remote_rssi());
}
// Invoke OnDiscoveryStarted to send cached device to BT instance,
// and check correctness of the Advertising data sent via arc bridge.
TEST_F(ArcBluetoothBridgeTest, LEDeviceFound) {
+ fake_arc_bridge_service_->set_bluetooth_version(0);
+ AddTestDevice();
+ arc_bluetooth_bridge_->OnDiscoveryStarted(nullptr);
// Check that we check bluetooth_instance version correctly.
- fake_arc_bluetooth_bridge_->OnDiscoveryStarted(nullptr);
- EXPECT_EQ((size_t)0, fake_bluetooth_instance->le_device_found_data().size());
+ EXPECT_EQ((size_t)0, fake_bluetooth_instance_->le_device_found_data().size());
- fake_arc_bluetooth_bridge_->SetBluetoothVersionForTest(1);
- fake_arc_bluetooth_bridge_->OnDiscoveryStarted(nullptr);
- EXPECT_EQ((size_t)1, fake_bluetooth_instance->le_device_found_data().size());
+ fake_arc_bridge_service_->set_bluetooth_version(1);
+ arc_bluetooth_bridge_->OnDiscoveryStarted(nullptr);
+ EXPECT_EQ((size_t)1, fake_bluetooth_instance_->le_device_found_data().size());
const mojom::BluetoothAddressPtr& addr =
- fake_bluetooth_instance->le_device_found_data().back()->addr();
- int32_t rssi = fake_bluetooth_instance->le_device_found_data().back()->rssi();
+ fake_bluetooth_instance_->le_device_found_data().back()->addr();
+ // int32_t rssi =
+ // fake_bluetooth_instance_->le_device_found_data().back()->rssi();
const mojo::Array<mojom::BluetoothAdvertisingDataPtr>& adv_data =
- fake_bluetooth_instance->le_device_found_data().back()->adv_data();
+ fake_bluetooth_instance_->le_device_found_data().back()->adv_data();
EXPECT_EQ(std::string(kAddressStr), addr->To<std::string>());
- EXPECT_EQ(kDeviceRssi, rssi);
EXPECT_EQ((size_t)1, adv_data.size());
EXPECT_TRUE(adv_data[0]->is_local_name());
@@ -191,14 +175,15 @@ TEST_F(ArcBluetoothBridgeTest, LEDeviceFound) {
// Invoke GetGattDB and check correctness of the GattDB sent via arc bridge.
TEST_F(ArcBluetoothBridgeTest, GetGattDB) {
- fake_arc_bluetooth_bridge_->GetGattDB(remote_addr.Clone());
+ AddTestDevice();
+ arc_bluetooth_bridge_->GetGattDB(remote_addr_.Clone());
- EXPECT_EQ((size_t)1, fake_bluetooth_instance->gatt_db_result().size());
+ EXPECT_EQ((size_t)1, fake_bluetooth_instance_->gatt_db_result().size());
const mojom::BluetoothAddressPtr& addr =
- fake_bluetooth_instance->gatt_db_result().back()->remote_addr();
+ fake_bluetooth_instance_->gatt_db_result().back()->remote_addr();
const mojo::Array<mojom::BluetoothGattDBElementPtr>& db =
- fake_bluetooth_instance->gatt_db_result().back()->db();
+ fake_bluetooth_instance_->gatt_db_result().back()->db();
EXPECT_EQ(std::string(kAddressStr), addr->To<std::string>());
EXPECT_EQ((size_t)2, db.size());
« no previous file with comments | « components/arc/bluetooth/arc_bluetooth_bridge.cc ('k') | components/arc/test/fake_arc_bridge_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698