unit_test:le_impl part 2
Bug: 265213364
Bug: 242901573
Test: gd/cert/run
Tag: #refactor
BYPASS_LONG_LINES_REASON: Bluetooth likes 120 lines
Merged-In: Id82d9ca79b01b06e448ce4feb4d677f54e875f69
Change-Id: Id82d9ca79b01b06e448ce4feb4d677f54e875f69
(cherry picked from commit 356ec4896d9e43822d84c37960ae0597bda72421)
diff --git a/system/gd/hci/acl_manager/le_impl_test.cc b/system/gd/hci/acl_manager/le_impl_test.cc
index ca9d022..19b16f7 100644
--- a/system/gd/hci/acl_manager/le_impl_test.cc
+++ b/system/gd/hci/acl_manager/le_impl_test.cc
@@ -62,12 +62,14 @@
[[maybe_unused]] constexpr bool kSkipFilterAcceptList = !kAddToFilterAcceptList;
[[maybe_unused]] constexpr bool kIsDirectConnection = true;
[[maybe_unused]] constexpr bool kIsBackgroundConnection = !kIsDirectConnection;
-constexpr ::bluetooth::crypto_toolbox::Octet16 kRotationIrk = {};
+constexpr crypto_toolbox::Octet16 kRotationIrk = {};
constexpr std::chrono::milliseconds kMinimumRotationTime(14 * 1000);
constexpr std::chrono::milliseconds kMaximumRotationTime(16 * 1000);
-constexpr uint16_t kIntervalMin = 0x20;
constexpr uint16_t kIntervalMax = 0x40;
+constexpr uint16_t kIntervalMin = 0x20;
constexpr uint16_t kLatency = 0x60;
+constexpr uint16_t kLength = 0x5678;
+constexpr uint16_t kTime = 0x1234;
constexpr uint16_t kTimeout = 0x80;
constexpr std::array<uint8_t, 16> kPeerIdentityResolvingKey({
0x00,
@@ -106,11 +108,12 @@
0x8f,
});
-// Generic template for all commands
-template <typename T, typename U>
-T CreateCommand(U u) {
- T command;
- return command;
+template <typename B>
+std::shared_ptr<std::vector<uint8_t>> Serialize(std::unique_ptr<B> build) {
+ auto bytes = std::make_shared<std::vector<uint8_t>>();
+ BitInserter bi(*bytes);
+ build->Serialize(bi);
+ return bytes;
}
template <typename T>
@@ -140,20 +143,16 @@
[[maybe_unused]] hci::CommandCompleteView ReturnCommandComplete(hci::OpCode op_code, hci::ErrorCode error_code) {
std::vector<uint8_t> success_vector{static_cast<uint8_t>(error_code)};
- auto bytes = std::make_shared<std::vector<uint8_t>>();
- BitInserter bi(*bytes);
auto builder = hci::CommandCompleteBuilder::Create(uint8_t{1}, op_code, std::make_unique<RawBuilder>(success_vector));
- builder->Serialize(bi);
+ auto bytes = Serialize<hci::CommandCompleteBuilder>(std::move(builder));
return hci::CommandCompleteView::Create(hci::EventView::Create(hci::PacketView<hci::kLittleEndian>(bytes)));
}
[[maybe_unused]] hci::CommandStatusView ReturnCommandStatus(hci::OpCode op_code, hci::ErrorCode error_code) {
std::vector<uint8_t> success_vector{static_cast<uint8_t>(error_code)};
- auto bytes = std::make_shared<std::vector<uint8_t>>();
- BitInserter bi(*bytes);
auto builder = hci::CommandStatusBuilder::Create(
hci::ErrorCode::SUCCESS, uint8_t{1}, op_code, std::make_unique<RawBuilder>(success_vector));
- builder->Serialize(bi);
+ auto bytes = Serialize<hci::CommandStatusBuilder>(std::move(builder));
return hci::CommandStatusView::Create(hci::EventView::Create(hci::PacketView<hci::kLittleEndian>(bytes)));
}
@@ -425,6 +424,7 @@
class LeImplTest : public ::testing::Test {
protected:
void SetUp() override {
+ bluetooth::common::InitFlags::SetAllForTesting();
thread_ = new Thread("thread", Thread::Priority::NORMAL);
handler_ = new Handler(thread_);
controller_ = new TestController();
@@ -579,8 +579,6 @@
connection_->RegisterCallbacks(&connection_management_callbacks_, handler_);
});
- auto bytes = std::make_shared<std::vector<uint8_t>>();
- BitInserter bi(*bytes);
auto command = LeEnhancedConnectionCompleteBuilder::Create(
ErrorCode::SUCCESS,
kHciHandle,
@@ -593,7 +591,7 @@
0x0000,
0x0011,
ClockAccuracy::PPM_30);
- command->Serialize(bi);
+ auto bytes = Serialize<LeEnhancedConnectionCompleteBuilder>(std::move(command));
auto view = CreateLeEventView<hci::LeEnhancedConnectionCompleteView>(bytes);
ASSERT_TRUE(view.IsValid());
le_impl_->on_le_event(view);
@@ -603,6 +601,7 @@
}
void TearDown() override {
+ connection_.reset();
LeImplTest::TearDown();
}
@@ -669,7 +668,7 @@
hci::Address remote_address;
Address::FromString("D0:05:04:03:02:01", remote_address);
hci::AddressWithType address_with_type(remote_address, hci::AddressType::PUBLIC_DEVICE_ADDRESS);
- EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(address_with_type, ::testing::_));
+ EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(address_with_type, _));
hci_layer_->IncomingLeMetaEvent(LeConnectionCompleteBuilder::Create(
ErrorCode::SUCCESS,
0x0041,
@@ -708,7 +707,7 @@
hci::Address remote_address;
Address::FromString("D0:05:04:03:02:01", remote_address);
hci::AddressWithType address_with_type(remote_address, hci::AddressType::PUBLIC_DEVICE_ADDRESS);
- EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(address_with_type, ::testing::_));
+ EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(address_with_type, _));
hci_layer_->IncomingLeMetaEvent(LeEnhancedConnectionCompleteBuilder::Create(
ErrorCode::SUCCESS,
0x0041,
@@ -747,7 +746,7 @@
ASSERT_EQ(ConnectabilityState::ARMED, le_impl_->connectability_state_);
// Receive connection complete of outgoing connection (Role::CENTRAL)
- EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(address_with_type, ::testing::_));
+ EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(address_with_type, _));
hci_layer_->IncomingLeMetaEvent(LeConnectionCompleteBuilder::Create(
ErrorCode::SUCCESS,
0x0041,
@@ -785,7 +784,7 @@
ASSERT_EQ(ConnectabilityState::ARMED, le_impl_->connectability_state_);
// Receive connection complete of outgoing connection (Role::CENTRAL)
- EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(address_with_type, ::testing::_));
+ EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(address_with_type, _));
hci_layer_->IncomingLeMetaEvent(LeEnhancedConnectionCompleteBuilder::Create(
ErrorCode::SUCCESS,
0x0041,
@@ -805,7 +804,6 @@
}
TEST_F(LeImplTest, register_with_address_manager__AddressPolicyNotSet) {
- bluetooth::common::InitFlags::SetAllForTesting();
auto log_capture = std::make_unique<LogCapture>();
std::promise<void> promise;
@@ -858,7 +856,6 @@
}
TEST_F(LeImplTest, disarm_connectability_DISARMED) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
le_impl_->connectability_state_ = ConnectabilityState::DISARMED;
@@ -872,7 +869,6 @@
}
TEST_F(LeImplTest, disarm_connectability_DISARMED_extended) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
le_impl_->connectability_state_ = ConnectabilityState::DISARMED;
@@ -887,7 +883,6 @@
}
TEST_F(LeImplTest, disarm_connectability_ARMING) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
le_impl_->connectability_state_ = ConnectabilityState::ARMING;
@@ -900,7 +895,6 @@
}
TEST_F(LeImplTest, disarm_connectability_ARMING_extended) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
le_impl_->connectability_state_ = ConnectabilityState::ARMING;
@@ -915,7 +909,6 @@
}
TEST_F(LeImplTest, disarm_connectability_ARMED) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
le_impl_->connectability_state_ = ConnectabilityState::ARMED;
@@ -929,7 +922,6 @@
}
TEST_F(LeImplTest, disarm_connectability_ARMED_extended) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
le_impl_->connectability_state_ = ConnectabilityState::ARMED;
@@ -944,7 +936,6 @@
}
TEST_F(LeImplTest, disarm_connectability_DISARMING) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
le_impl_->connectability_state_ = ConnectabilityState::DISARMING;
@@ -958,7 +949,6 @@
}
TEST_F(LeImplTest, disarm_connectability_DISARMING_extended) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
le_impl_->connectability_state_ = ConnectabilityState::DISARMING;
@@ -973,7 +963,6 @@
}
TEST_F(LeImplTest, register_with_address_manager__AddressPolicyPublicAddress) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
set_privacy_policy_for_initiator_address(fixed_address_, LeAddressManager::AddressPolicy::USE_PUBLIC_ADDRESS);
@@ -995,7 +984,6 @@
}
TEST_F(LeImplTest, register_with_address_manager__AddressPolicyStaticAddress) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
set_privacy_policy_for_initiator_address(fixed_address_, LeAddressManager::AddressPolicy::USE_STATIC_ADDRESS);
@@ -1017,7 +1005,6 @@
}
TEST_F(LeImplTest, register_with_address_manager__AddressPolicyNonResolvableAddress) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
set_privacy_policy_for_initiator_address(fixed_address_, LeAddressManager::AddressPolicy::USE_NON_RESOLVABLE_ADDRESS);
@@ -1039,7 +1026,6 @@
}
TEST_F(LeImplTest, register_with_address_manager__AddressPolicyResolvableAddress) {
- bluetooth::common::InitFlags::SetAllForTesting();
std::unique_ptr<LogCapture> log_capture = std::make_unique<LogCapture>();
set_privacy_policy_for_initiator_address(fixed_address_, LeAddressManager::AddressPolicy::USE_RESOLVABLE_ADDRESS);
@@ -1061,8 +1047,6 @@
}
TEST_F(LeImplTest, add_device_to_resolving_list) {
- bluetooth::common::InitFlags::SetAllForTesting();
-
// Some kind of privacy policy must be set for LeAddressManager to operate properly
set_privacy_policy_for_initiator_address(fixed_address_, LeAddressManager::AddressPolicy::USE_PUBLIC_ADDRESS);
// Let LeAddressManager::resume_registered_clients execute
@@ -1133,8 +1117,6 @@
}
TEST_F(LeImplTest, add_device_to_resolving_list__SupportsBlePrivacy) {
- bluetooth::common::InitFlags::SetAllForTesting();
-
controller_->supports_ble_privacy_ = true;
// Some kind of privacy policy must be set for LeAddressManager to operate properly
@@ -1228,11 +1210,8 @@
}
TEST_F(LeImplTest, on_le_event__CONNECTION_COMPLETE_CENTRAL) {
- bluetooth::common::InitFlags::SetAllForTesting();
+ EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(_, _)).Times(1);
set_random_device_address_policy();
-
- EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(::testing::_, ::testing::_)).Times(1);
-
auto command = LeConnectionCompleteBuilder::Create(
ErrorCode::SUCCESS,
kHciHandle,
@@ -1243,22 +1222,15 @@
0x0000,
0x0011,
ClockAccuracy::PPM_30);
- auto bytes = std::make_shared<std::vector<uint8_t>>();
- BitInserter bi(*bytes);
- command->Serialize(bi);
+ auto bytes = Serialize<LeConnectionCompleteBuilder>(std::move(command));
auto view = CreateLeEventView<hci::LeConnectionCompleteView>(bytes);
ASSERT_TRUE(view.IsValid());
le_impl_->on_le_event(view);
}
TEST_F(LeImplTest, on_le_event__CONNECTION_COMPLETE_PERIPHERAL) {
- bluetooth::common::InitFlags::SetAllForTesting();
+ EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(_, _)).Times(1);
set_random_device_address_policy();
-
- EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(::testing::_, ::testing::_)).Times(1);
-
- auto bytes = std::make_shared<std::vector<uint8_t>>();
- BitInserter bi(*bytes);
auto command = LeConnectionCompleteBuilder::Create(
ErrorCode::SUCCESS,
kHciHandle,
@@ -1269,18 +1241,15 @@
0x0000,
0x0011,
ClockAccuracy::PPM_30);
- command->Serialize(bi);
+ auto bytes = Serialize<LeConnectionCompleteBuilder>(std::move(command));
auto view = CreateLeEventView<hci::LeConnectionCompleteView>(bytes);
ASSERT_TRUE(view.IsValid());
le_impl_->on_le_event(view);
}
TEST_F(LeImplTest, on_le_event__ENHANCED_CONNECTION_COMPLETE_CENTRAL) {
- bluetooth::common::InitFlags::SetAllForTesting();
+ EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(_, _)).Times(1);
set_random_device_address_policy();
-
- EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(::testing::_, ::testing::_)).Times(1);
-
auto command = LeEnhancedConnectionCompleteBuilder::Create(
ErrorCode::SUCCESS,
kHciHandle,
@@ -1293,20 +1262,14 @@
0x0000,
0x0011,
ClockAccuracy::PPM_30);
- auto bytes = std::make_shared<std::vector<uint8_t>>();
- BitInserter bi(*bytes);
- command->Serialize(bi);
+ auto bytes = Serialize<LeEnhancedConnectionCompleteBuilder>(std::move(command));
auto view = CreateLeEventView<hci::LeEnhancedConnectionCompleteView>(bytes);
ASSERT_TRUE(view.IsValid());
le_impl_->on_le_event(view);
}
TEST_F(LeImplTest, on_le_event__ENHANCED_CONNECTION_COMPLETE_PERIPHERAL) {
- EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(::testing::_, ::testing::_)).Times(1);
-
- bluetooth::common::InitFlags::SetAllForTesting();
- set_random_device_address_policy();
-
+ EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectSuccess(_, _)).Times(1);
auto command = LeEnhancedConnectionCompleteBuilder::Create(
ErrorCode::SUCCESS,
kHciHandle,
@@ -1319,9 +1282,7 @@
0x0000,
0x0011,
ClockAccuracy::PPM_30);
- auto bytes = std::make_shared<std::vector<uint8_t>>();
- BitInserter bi(*bytes);
- command->Serialize(bi);
+ auto bytes = Serialize<LeEnhancedConnectionCompleteBuilder>(std::move(command));
auto view = CreateLeEventView<hci::LeEnhancedConnectionCompleteView>(bytes);
ASSERT_TRUE(view.IsValid());
le_impl_->on_le_event(view);
@@ -1340,11 +1301,9 @@
}
TEST_F(LeImplWithConnectionTest, on_le_event__PHY_UPDATE_COMPLETE) {
- bluetooth::common::InitFlags::SetAllForTesting();
- set_random_device_address_policy();
- hci::ErrorCode hci_status;
- hci::PhyType tx_phy;
- hci::PhyType rx_phy;
+ hci::ErrorCode hci_status{ErrorCode::STATUS_UNKNOWN};
+ hci::PhyType tx_phy{0};
+ hci::PhyType rx_phy{0};
// Send a phy update
{
@@ -1354,10 +1313,8 @@
tx_phy = static_cast<PhyType>(_tx_phy);
rx_phy = static_cast<PhyType>(_rx_phy);
});
- auto command = LePhyUpdateCompleteBuilder::Create(ErrorCode::SUCCESS, kHciHandle, 0x01, 0x01);
- auto bytes = std::make_shared<std::vector<uint8_t>>();
- BitInserter bi(*bytes);
- command->Serialize(bi);
+ auto command = LePhyUpdateCompleteBuilder::Create(ErrorCode::SUCCESS, kHciHandle, 0x01, 0x02);
+ auto bytes = Serialize<LePhyUpdateCompleteBuilder>(std::move(command));
auto view = CreateLeEventView<hci::LePhyUpdateCompleteView>(bytes);
ASSERT_TRUE(view.IsValid());
le_impl_->on_le_event(view);
@@ -1366,12 +1323,10 @@
sync_handler();
ASSERT_EQ(ErrorCode::SUCCESS, hci_status);
ASSERT_EQ(PhyType::LE_1M, tx_phy);
+ ASSERT_EQ(PhyType::LE_2M, rx_phy);
}
TEST_F(LeImplWithConnectionTest, on_le_event__DATA_LENGTH_CHANGE) {
- bluetooth::common::InitFlags::SetAllForTesting();
- set_random_device_address_policy();
-
uint16_t tx_octets{0};
uint16_t tx_time{0};
uint16_t rx_octets{0};
@@ -1387,9 +1342,7 @@
rx_time = _rx_time;
});
auto command = LeDataLengthChangeBuilder::Create(kHciHandle, 0x1234, 0x5678, 0x9abc, 0xdef0);
- auto bytes = std::make_shared<std::vector<uint8_t>>();
- BitInserter bi(*bytes);
- command->Serialize(bi);
+ auto bytes = Serialize<LeDataLengthChangeBuilder>(std::move(command));
auto view = CreateLeEventView<hci::LeDataLengthChangeView>(bytes);
ASSERT_TRUE(view.IsValid());
le_impl_->on_le_event(view);
@@ -1403,15 +1356,10 @@
}
TEST_F(LeImplWithConnectionTest, on_le_event__REMOTE_CONNECTION_PARAMETER_REQUEST) {
- bluetooth::common::InitFlags::SetAllForTesting();
- set_random_device_address_policy();
-
// Send a remote connection parameter request
- auto bytes = std::make_shared<std::vector<uint8_t>>();
- BitInserter bi(*bytes);
auto command = hci::LeRemoteConnectionParameterRequestBuilder::Create(
kHciHandle, kIntervalMin, kIntervalMax, kLatency, kTimeout);
- command->Serialize(bi);
+ auto bytes = Serialize<LeRemoteConnectionParameterRequestBuilder>(std::move(command));
{
auto view = CreateLeEventView<hci::LeRemoteConnectionParameterRequestView>(bytes);
ASSERT_TRUE(view.IsValid());
@@ -1432,6 +1380,97 @@
ASSERT_EQ(kTimeout, view.GetTimeout());
}
+TEST_F(LeImplRegisteredWithAddressManagerTest, clear_resolving_list) {
+ le_impl_->clear_resolving_list();
+ ASSERT_EQ(3UL, le_impl_->le_address_manager_->NumberCachedCommands());
+
+ sync_handler(); // Allow |LeAddressManager::pause_registered_clients| to complete
+ sync_handler(); // Allow |LeAddressManager::handle_next_command| to complete
+
+ ASSERT_EQ(1UL, hci_layer_->NumberOfQueuedCommands());
+ {
+ auto view = CreateLeSecurityCommandView<LeSetAddressResolutionEnableView>(hci_layer_->DequeueCommandBytes());
+ ASSERT_TRUE(view.IsValid());
+ ASSERT_EQ(Enable::DISABLED, view.GetAddressResolutionEnable());
+ le_impl_->le_address_manager_->OnCommandComplete(
+ ReturnCommandComplete(OpCode::LE_SET_ADDRESS_RESOLUTION_ENABLE, ErrorCode::SUCCESS));
+ }
+
+ sync_handler(); // Allow |LeAddressManager::check_cached_commands| to complete
+ ASSERT_EQ(1UL, hci_layer_->NumberOfQueuedCommands());
+ {
+ auto view = CreateLeSecurityCommandView<LeClearResolvingListView>(hci_layer_->DequeueCommandBytes());
+ ASSERT_TRUE(view.IsValid());
+ le_impl_->le_address_manager_->OnCommandComplete(
+ ReturnCommandComplete(OpCode::LE_CLEAR_RESOLVING_LIST, ErrorCode::SUCCESS));
+ }
+
+ sync_handler(); // Allow |LeAddressManager::handle_next_command| to complete
+ ASSERT_EQ(1UL, hci_layer_->NumberOfQueuedCommands());
+ {
+ auto view = CreateLeSecurityCommandView<LeSetAddressResolutionEnableView>(hci_layer_->DequeueCommandBytes());
+ ASSERT_TRUE(view.IsValid());
+ ASSERT_EQ(Enable::ENABLED, view.GetAddressResolutionEnable());
+ le_impl_->le_address_manager_->OnCommandComplete(
+ ReturnCommandComplete(OpCode::LE_SET_ADDRESS_RESOLUTION_ENABLE, ErrorCode::SUCCESS));
+ }
+ ASSERT_TRUE(hci_layer_->IsPacketQueueEmpty());
+}
+
+TEST_F(LeImplWithConnectionTest, HACK_get_handle) {
+ sync_handler();
+
+ ASSERT_EQ(kHciHandle, le_impl_->HACK_get_handle(remote_address_));
+}
+
+TEST_F(LeImplTest, on_le_connection_canceled_on_pause) {
+ set_random_device_address_policy();
+ le_impl_->pause_connection = true;
+ le_impl_->on_le_connection_canceled_on_pause();
+ ASSERT_TRUE(le_impl_->arm_on_resume_);
+ ASSERT_EQ(ConnectabilityState::DISARMED, le_impl_->connectability_state_);
+}
+
+TEST_F(LeImplTest, on_create_connection_timeout) {
+ EXPECT_CALL(mock_le_connection_callbacks_, OnLeConnectFail(_, ErrorCode::CONNECTION_ACCEPT_TIMEOUT)).Times(1);
+ le_impl_->create_connection_timeout_alarms_.emplace(
+ std::piecewise_construct,
+ std::forward_as_tuple(
+ remote_public_address_with_type_.GetAddress(), remote_public_address_with_type_.GetAddressType()),
+ std::forward_as_tuple(handler_));
+ le_impl_->on_create_connection_timeout(remote_public_address_with_type_);
+ sync_handler();
+ ASSERT_TRUE(le_impl_->create_connection_timeout_alarms_.empty());
+}
+
+TEST_F(LeImplTest, on_common_le_connection_complete__NoPriorConnection) {
+ auto log_capture = std::make_unique<LogCapture>();
+ le_impl_->on_common_le_connection_complete(remote_public_address_with_type_);
+ ASSERT_TRUE(le_impl_->connecting_le_.empty());
+ ASSERT_TRUE(log_capture->Rewind()->Find("No prior connection request for"));
+}
+
+TEST_F(LeImplTest, cancel_connect) {
+ le_impl_->create_connection_timeout_alarms_.emplace(
+ std::piecewise_construct,
+ std::forward_as_tuple(
+ remote_public_address_with_type_.GetAddress(), remote_public_address_with_type_.GetAddressType()),
+ std::forward_as_tuple(handler_));
+ le_impl_->cancel_connect(remote_public_address_with_type_);
+ sync_handler();
+ ASSERT_TRUE(le_impl_->create_connection_timeout_alarms_.empty());
+}
+
+TEST_F(LeImplTest, set_le_suggested_default_data_parameters) {
+ le_impl_->set_le_suggested_default_data_parameters(kLength, kTime);
+ sync_handler();
+ auto view =
+ CreateLeConnectionManagementCommandView<LeWriteSuggestedDefaultDataLengthView>(hci_layer_->DequeueCommandBytes());
+ ASSERT_TRUE(view.IsValid());
+ ASSERT_EQ(kLength, view.GetTxOctets());
+ ASSERT_EQ(kTime, view.GetTxTime());
+}
+
} // namespace acl_manager
} // namespace hci
} // namespace bluetooth