Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b7174cb authored by Chris Manton's avatar Chris Manton Committed by Automerger Merge Worker
Browse files

Introduce bta_test am: bd72bf35 am: f89a1ed2

Original change: https://android-review.googlesource.com/c/platform/system/bt/+/1580863

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I456115310b48b0fe0cfc93d5801c8d857d563b3f
parents 93a8d4d5 f89a1ed2
Loading
Loading
Loading
Loading
+57 −0
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@
#include "bta/dm/bta_dm_int.h"
#include "bta/dm/bta_dm_int.h"
#include "bta/hf_client/bta_hf_client_int.h"
#include "bta/hf_client/bta_hf_client_int.h"
#include "bta/include/bta_hf_client_api.h"
#include "bta/include/bta_hf_client_api.h"
#include "bta/test/common/fake_osi.h"
#include "common/message_loop_thread.h"
#include "common/message_loop_thread.h"


std::map<std::string, int> mock_function_count_map;
std::map<std::string, int> mock_function_count_map;
@@ -67,3 +68,59 @@ TEST_F(BtaDmTest, nop) {
  bool status = true;
  bool status = true;
  ASSERT_EQ(true, status);
  ASSERT_EQ(true, status);
}
}

extern struct fake_osi_alarm_set_on_mloop fake_osi_alarm_set_on_mloop_;

TEST_F(BtaDmTest, disable_no_acl_links) {
  bta_dm_cb.disabling = true;

  bta_dm_disable();  // Waiting for all ACL connections to drain
  ASSERT_EQ(0, mock_function_count_map["btm_remove_acl"]);
  ASSERT_EQ(1, mock_function_count_map["alarm_set_on_mloop"]);

  // Execute timer callback
  fake_osi_alarm_set_on_mloop_.cb(fake_osi_alarm_set_on_mloop_.data);
  ASSERT_EQ(1, mock_function_count_map["alarm_set_on_mloop"]);
  ASSERT_EQ(0, mock_function_count_map["BTIF_dm_disable"]);
  ASSERT_EQ(1, mock_function_count_map["future_ready"]);
  ASSERT_TRUE(!bta_dm_cb.disabling);
}

extern uint16_t mock_stack_acl_num_links;
TEST_F(BtaDmTest, disable_first_pass_with_acl_links) {
  bta_dm_cb.disabling = true;
  // ACL link is open
  mock_stack_acl_num_links = bta_dm_cb.device_list.count = 1;

  bta_dm_disable();              // Waiting for all ACL connections to drain
  mock_stack_acl_num_links = 0;  // ACL link has closed
  ASSERT_EQ(1, mock_function_count_map["alarm_set_on_mloop"]);
  ASSERT_EQ(0, mock_function_count_map["BTIF_dm_disable"]);

  // First disable pass
  fake_osi_alarm_set_on_mloop_.cb(fake_osi_alarm_set_on_mloop_.data);
  ASSERT_EQ(1, mock_function_count_map["alarm_set_on_mloop"]);
  ASSERT_EQ(1, mock_function_count_map["BTIF_dm_disable"]);
  ASSERT_TRUE(!bta_dm_cb.disabling);
}

TEST_F(BtaDmTest, disable_second_pass_with_acl_links) {
  bta_dm_cb.disabling = true;
  // ACL link is open
  mock_stack_acl_num_links = bta_dm_cb.device_list.count = 1;

  bta_dm_disable();  // Waiting for all ACL connections to drain
  ASSERT_EQ(1, mock_function_count_map["alarm_set_on_mloop"]);
  ASSERT_EQ(0, mock_function_count_map["BTIF_dm_disable"]);

  // First disable pass
  fake_osi_alarm_set_on_mloop_.cb(fake_osi_alarm_set_on_mloop_.data);
  ASSERT_EQ(2, mock_function_count_map["alarm_set_on_mloop"]);
  ASSERT_EQ(0, mock_function_count_map["BTIF_dm_disable"]);
  ASSERT_EQ(1, mock_function_count_map["btm_remove_acl"]);

  // Second disable pass
  fake_osi_alarm_set_on_mloop_.cb(fake_osi_alarm_set_on_mloop_.data);
  ASSERT_EQ(1, mock_function_count_map["BTIF_dm_disable"]);
  ASSERT_TRUE(!bta_dm_cb.disabling);
}