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

Commit 676d5520 authored by Jakub Tyszkowski's avatar Jakub Tyszkowski Committed by Łukasz Rymanowski
Browse files

LeAudio: Use mock class for ASE control point ops

This will allow to wasily verify the calls in future patches.

Bug: 227116068
Test: atest --host bluetooth_le_audio_test bluetooth_le_audio_client_test
Change-Id: I8d49c9a94bd14042f99e922318ab9a8572f0f7af
parent 220708d9
Loading
Loading
Loading
Loading
+246 −148
Original line number Diff line number Diff line
@@ -135,15 +135,7 @@ constexpr uint8_t kAseParamFramingUnframedSupported = 0x00;
// constexpr uint8_t kAseParamPreferredPhy2M = 0x02;
// constexpr uint8_t kAseParamPreferredPhyCoded = 0x04;

constexpr uint8_t kAseCtpOpcodeConfigureCodec = 0x01;
constexpr uint8_t kAseCtpOpcodeConfigureQos = 0x02;
constexpr uint8_t kAseCtpOpcodeEnable = 0x03;
constexpr uint8_t kAseCtpOpcodeReceiverStartReady = 0x04;
constexpr uint8_t kAseCtpOpcodeDisable = 0x05;
constexpr uint8_t kAseCtpOpcodeReceiverStopReady = 0x06;
// constexpr uint8_t kAseCtpOpcodeUpdateMetadata = 0x07;
constexpr uint8_t kAseCtpOpcodeRelease = 0x08;
constexpr uint8_t kAseCtpOpcodeMaxVal = kAseCtpOpcodeRelease;
constexpr uint8_t kAseCtpOpcodeMaxVal = client_parser::ascs::kCtpOpcodeRelease;

}  // namespace ascs

@@ -171,6 +163,38 @@ class MockLeAudioGroupStateMachineCallbacks
              (LeAudioDevice * leAudioDevice), (override));
};

class MockAseRemoteStateMachine {
 public:
  MockAseRemoteStateMachine() = default;
  MockAseRemoteStateMachine& operator=(const MockAseRemoteStateMachine&) =
      delete;
  ~MockAseRemoteStateMachine() = default;
  MOCK_METHOD((void), AseCtpConfigureCodecHandler,
              (LeAudioDevice * device, std::vector<uint8_t> value,
               GATT_WRITE_OP_CB cb, void* cb_data));
  MOCK_METHOD((void), AseCtpConfigureQosHandler,
              (LeAudioDevice * device, std::vector<uint8_t> value,
               GATT_WRITE_OP_CB cb, void* cb_data));
  MOCK_METHOD((void), AseCtpEnableHandler,
              (LeAudioDevice * device, std::vector<uint8_t> value,
               GATT_WRITE_OP_CB cb, void* cb_data));
  MOCK_METHOD((void), AseCtpReceiverStartReadyHandler,
              (LeAudioDevice * device, std::vector<uint8_t> value,
               GATT_WRITE_OP_CB cb, void* cb_data));
  MOCK_METHOD((void), AseCtpDisableHandler,
              (LeAudioDevice * device, std::vector<uint8_t> value,
               GATT_WRITE_OP_CB cb, void* cb_data));
  MOCK_METHOD((void), AseCtpReceiverStopReadyHandler,
              (LeAudioDevice * device, std::vector<uint8_t> value,
               GATT_WRITE_OP_CB cb, void* cb_data));
  MOCK_METHOD((void), AseCtpUpdateMetadataHandler,
              (LeAudioDevice * device, std::vector<uint8_t> value,
               GATT_WRITE_OP_CB cb, void* cb_data));
  MOCK_METHOD((void), AseCtpReleaseHandler,
              (LeAudioDevice * device, std::vector<uint8_t> value,
               GATT_WRITE_OP_CB cb, void* cb_data));
};

class StateMachineTestBase : public Test {
 protected:
  uint8_t ase_id_last_assigned = types::ase::kAseIdInvalid;
@@ -264,8 +288,42 @@ class StateMachineTestBase : public Test {
    ASSERT_LT(opcode, ascs::kAseCtpOpcodeMaxVal + 1);
    ASSERT_NE(opcode, 0);

    if (ase_ctp_handlers[opcode])
      ase_ctp_handlers[opcode](device, std::move(value), cb, cb_data);
    switch (opcode) {
      case client_parser::ascs::kCtpOpcodeCodecConfiguration:
        ase_ctp_handler.AseCtpConfigureCodecHandler(device, std::move(value),
                                                    cb, cb_data);
        break;
      case client_parser::ascs::kCtpOpcodeQosConfiguration:
        ase_ctp_handler.AseCtpConfigureQosHandler(device, std::move(value), cb,
                                                  cb_data);
        break;
      case client_parser::ascs::kCtpOpcodeEnable:
        ase_ctp_handler.AseCtpEnableHandler(device, std::move(value), cb,
                                            cb_data);
        break;
      case client_parser::ascs::kCtpOpcodeReceiverStartReady:
        ase_ctp_handler.AseCtpReceiverStartReadyHandler(
            device, std::move(value), cb, cb_data);
        break;
      case client_parser::ascs::kCtpOpcodeDisable:
        ase_ctp_handler.AseCtpDisableHandler(device, std::move(value), cb,
                                             cb_data);
        break;
      case client_parser::ascs::kCtpOpcodeReceiverStopReady:
        ase_ctp_handler.AseCtpReceiverStopReadyHandler(device, std::move(value),
                                                       cb, cb_data);
        break;
      case client_parser::ascs::kCtpOpcodeUpdateMetadata:
        ase_ctp_handler.AseCtpUpdateMetadataHandler(device, std::move(value),
                                                    cb, cb_data);
        break;
      case client_parser::ascs::kCtpOpcodeRelease:
        ase_ctp_handler.AseCtpReleaseHandler(device, std::move(value), cb,
                                             cb_data);
        break;
      default:
        break;
    };
  }

/* Helper function to make a deterministic (and unique on the entire device)
@@ -493,9 +551,6 @@ class StateMachineTestBase : public Test {
    bluetooth::manager::SetMockBtmInterface(nullptr);
    controller::SetMockControllerInterface(nullptr);

    for (auto i = 0u; i <= ascs::kAseCtpOpcodeMaxVal; ++i)
      ase_ctp_handlers[i] = nullptr;

    le_audio_devices_.clear();
    addresses_.clear();
    cached_codec_configuration_map_.clear();
@@ -881,9 +936,10 @@ class StateMachineTestBase : public Test {
  void PrepareConfigureCodecHandler(LeAudioDeviceGroup* group,
                                    int verify_ase_count = 0,
                                    bool caching = false) {
    ase_ctp_handlers[ascs::kAseCtpOpcodeConfigureCodec] =
        [group, verify_ase_count, caching, this](
            LeAudioDevice* device, std::vector<uint8_t> value,
    ON_CALL(ase_ctp_handler, AseCtpConfigureCodecHandler)
        .WillByDefault(Invoke([group, verify_ase_count, caching, this](
                                  LeAudioDevice* device,
                                  std::vector<uint8_t> value,
                                  GATT_WRITE_OP_CB cb, void* cb_data) {
          auto num_ase = value[1];

@@ -947,15 +1003,16 @@ class StateMachineTestBase : public Test {
              return;
            }
          }
        };
        }));
  }

  void PrepareConfigureQosHandler(LeAudioDeviceGroup* group,
                                  int verify_ase_count = 0,
                                  bool caching = false) {
    ase_ctp_handlers[ascs::kAseCtpOpcodeConfigureQos] =
        [group, verify_ase_count, caching, this](
            LeAudioDevice* device, std::vector<uint8_t> value,
    ON_CALL(ase_ctp_handler, AseCtpConfigureQosHandler)
        .WillByDefault(Invoke([group, verify_ase_count, caching, this](
                                  LeAudioDevice* device,
                                  std::vector<uint8_t> value,
                                  GATT_WRITE_OP_CB cb, void* cb_data) {
          auto num_ase = value[1];

@@ -1023,14 +1080,13 @@ class StateMachineTestBase : public Test {
                                       ascs::kAseStateQoSConfigured,
                                       &qos_configured_state_params);
          }
        };
        }));
  }

  void PrepareCtpNotificationError(LeAudioDeviceGroup* group, uint8_t opcode,
                                   uint8_t response_code, uint8_t reason) {
    ase_ctp_handlers[opcode] = [group, opcode, response_code, reason](
                                   LeAudioDevice* device,
                                   std::vector<uint8_t> value,
    auto foo = [group, opcode, response_code, reason](
                   LeAudioDevice* device, std::vector<uint8_t> value,
                   GATT_WRITE_OP_CB cb, void* cb_data) {
      auto num_ase = value[1];
      std::vector<uint8_t> notif_value(
@@ -1067,14 +1123,53 @@ class StateMachineTestBase : public Test {
      LeAudioGroupStateMachine::Get()->ProcessGattCtpNotification(
          group, notif_value.data(), notif_value.size());
    };

    switch (opcode) {
      case client_parser::ascs::kCtpOpcodeCodecConfiguration:
        ON_CALL(ase_ctp_handler, AseCtpConfigureCodecHandler)
            .WillByDefault(Invoke(foo));
        break;
      case client_parser::ascs::kCtpOpcodeQosConfiguration:
        ON_CALL(ase_ctp_handler, AseCtpConfigureQosHandler)
            .WillByDefault(Invoke(foo));
        break;
      case client_parser::ascs::kCtpOpcodeEnable:
        ON_CALL(ase_ctp_handler, AseCtpEnableHandler)
            .WillByDefault(Invoke(foo));
        break;
      case client_parser::ascs::kCtpOpcodeReceiverStartReady:
        ON_CALL(ase_ctp_handler, AseCtpReceiverStartReadyHandler)
            .WillByDefault(Invoke(foo));
        break;
      case client_parser::ascs::kCtpOpcodeDisable:
        ON_CALL(ase_ctp_handler, AseCtpDisableHandler)
            .WillByDefault(Invoke(foo));
        break;
      case client_parser::ascs::kCtpOpcodeReceiverStopReady:
        ON_CALL(ase_ctp_handler, AseCtpReceiverStopReadyHandler)
            .WillByDefault(Invoke(foo));
        break;
      case client_parser::ascs::kCtpOpcodeUpdateMetadata:
        ON_CALL(ase_ctp_handler, AseCtpUpdateMetadataHandler)
            .WillByDefault(Invoke(foo));
        break;
      case client_parser::ascs::kCtpOpcodeRelease:
        ON_CALL(ase_ctp_handler, AseCtpReleaseHandler)
            .WillByDefault(Invoke(foo));
        break;
      default:
        break;
    };
  }

  void PrepareEnableHandler(LeAudioDeviceGroup* group, int verify_ase_count = 0,
                            bool inject_enabling = true,
                            bool incject_streaming = true) {
    ase_ctp_handlers[ascs::kAseCtpOpcodeEnable] =
        [group, verify_ase_count, inject_enabling, incject_streaming, this](
            LeAudioDevice* device, std::vector<uint8_t> value,
    ON_CALL(ase_ctp_handler, AseCtpEnableHandler)
        .WillByDefault(Invoke([group, verify_ase_count, inject_enabling,
                               incject_streaming,
                               this](LeAudioDevice* device,
                                     std::vector<uint8_t> value,
                                     GATT_WRITE_OP_CB cb, void* cb_data) {
          auto num_ase = value[1];

@@ -1118,13 +1213,14 @@ class StateMachineTestBase : public Test {
                  ase, device, group, ascs::kAseStateEnabling, &enable_params);
            }
          }
        };
        }));
  }

  void PrepareDisableHandler(LeAudioDeviceGroup* group,
                             int verify_ase_count = 0) {
    ase_ctp_handlers[ascs::kAseCtpOpcodeDisable] =
        [group, verify_ase_count, this](LeAudioDevice* device,
    ON_CALL(ase_ctp_handler, AseCtpDisableHandler)
        .WillByDefault(Invoke([group, verify_ase_count, this](
                                  LeAudioDevice* device,
                                  std::vector<uint8_t> value,
                                  GATT_WRITE_OP_CB cb, void* cb_data) {
          auto num_ase = value[1];
@@ -1164,13 +1260,14 @@ class StateMachineTestBase : public Test {
                                         &qos_configured_state_params);
            }
          }
        };
        }));
  }

  void PrepareReceiverStartReady(LeAudioDeviceGroup* group,
  void PrepareReceiverStartReadyHandler(LeAudioDeviceGroup* group,
                                        int verify_ase_count = 0) {
    ase_ctp_handlers[ascs::kAseCtpOpcodeReceiverStartReady] =
        [group, verify_ase_count, this](LeAudioDevice* device,
    ON_CALL(ase_ctp_handler, AseCtpReceiverStartReadyHandler)
        .WillByDefault(Invoke([group, verify_ase_count, this](
                                  LeAudioDevice* device,
                                  std::vector<uint8_t> value,
                                  GATT_WRITE_OP_CB cb, void* cb_data) {
          auto num_ase = value[1];
@@ -1197,21 +1294,23 @@ class StateMachineTestBase : public Test {
                                       ascs::kAseStateStreaming,
                                       &streaming_params);
          }
        };
        }));
  }

  void PrepareReceiverStopReady(LeAudioDeviceGroup* group,
                                int verify_ase_count = 0) {
    ase_ctp_handlers[ascs::kAseCtpOpcodeReceiverStopReady] =
        [group, verify_ase_count, this](LeAudioDevice* device,
                                        std::vector<uint8_t> value,
    ON_CALL(ase_ctp_handler, AseCtpReceiverStopReadyHandler)
        .WillByDefault(
            Invoke([group, verify_ase_count, this](
                       LeAudioDevice* device, std::vector<uint8_t> value,
                       GATT_WRITE_OP_CB cb, void* cb_data) {
              auto num_ase = value[1];

              // Verify ase count if needed
              if (verify_ase_count) ASSERT_EQ(verify_ase_count, num_ase);

          // Inject QoS configured ASE state notification for each Source ASE
              // Inject QoS configured ASE state notification for each Source
              // ASE
              auto* ase_p = &value[2];
              for (auto i = 0u; i < num_ase; ++i) {
                /* Check if this is a valid ASE ID  */
@@ -1230,16 +1329,17 @@ class StateMachineTestBase : public Test {
                                           ascs::kAseStateQoSConfigured,
                                           &qos_configured_state_params);
              }
        };
            }));
  }

  void PrepareReleaseHandler(LeAudioDeviceGroup* group,
                             int verify_ase_count = 0,
                             bool inject_disconnect_device = false,
                             LeAudioDevice* dev = nullptr) {
    ase_ctp_handlers[ascs::kAseCtpOpcodeRelease] =
        [group, verify_ase_count, inject_disconnect_device, dev, this](
            LeAudioDevice* device, std::vector<uint8_t> value,
    ON_CALL(ase_ctp_handler, AseCtpReleaseHandler)
        .WillByDefault(
            Invoke([group, verify_ase_count, inject_disconnect_device, dev,
                    this](LeAudioDevice* device, std::vector<uint8_t> value,
                          GATT_WRITE_OP_CB cb, void* cb_data) {
              if (dev != nullptr && device != dev) {
                LOG_INFO("Do nothing for %s",
@@ -1287,7 +1387,7 @@ class StateMachineTestBase : public Test {
                                             ascs::kAseStateIdle, nullptr);
                }
              }
        };
            }));
  }

  MockCsisClient mock_csis_client_module_;
@@ -1301,9 +1401,7 @@ class StateMachineTestBase : public Test {
  le_audio::CodecManager* codec_manager_;
  MockCodecManager* mock_codec_manager_;

  std::function<void(LeAudioDevice* device, std::vector<uint8_t> value,
                     GATT_WRITE_OP_CB cb, void* cb_data)>
      ase_ctp_handlers[ascs::kAseCtpOpcodeMaxVal + 1] = {nullptr};
  MockAseRemoteStateMachine ase_ctp_handler;
  std::map<int, client_parser::ascs::ase_codec_configured_state_params>
      cached_codec_configuration_map_;
  std::map<int, client_parser::ascs::ase_qos_configured_state_params>
@@ -1599,7 +1697,7 @@ TEST_F(StateMachineTest, testStreamCreationError) {
  PrepareConfigureCodecHandler(group, 1);
  PrepareConfigureQosHandler(group, 1);
  PrepareCtpNotificationError(
      group, ascs::kAseCtpOpcodeEnable,
      group, client_parser::ascs::kCtpOpcodeEnable,
      client_parser::ascs::kCtpResponseCodeUnspecifiedError,
      client_parser::ascs::kCtpResponseNoReason);
  PrepareReleaseHandler(group);
@@ -1767,7 +1865,7 @@ TEST_F(StateMachineTest, testStreamSkipEnablingSinkSource) {
  PrepareConfigureCodecHandler(group, 3);
  PrepareConfigureQosHandler(group, 3);
  PrepareEnableHandler(group, 3, false);
  PrepareReceiverStartReady(group, 1);
  PrepareReceiverStartReadyHandler(group, 1);

  auto* leAudioDevice = group->GetFirstDevice();
  EXPECT_CALL(gatt_queue,
@@ -1817,7 +1915,7 @@ TEST_F(StateMachineTest, testStreamMultipleMedia_OneMemberHasNoAses) {
  PrepareConfigureCodecHandler(group);
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  EXPECT_CALL(*mock_iso_manager_, CreateCig(_, _)).Times(1);
  EXPECT_CALL(*mock_iso_manager_, EstablishCis(_)).Times(AtLeast(1));
@@ -1893,7 +1991,7 @@ TEST_F(StateMachineTest,
  PrepareConfigureCodecHandler(group);
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  EXPECT_CALL(*mock_iso_manager_, CreateCig(_, _)).Times(1);
  EXPECT_CALL(*mock_iso_manager_, EstablishCis(_)).Times(AtLeast(1));
@@ -1969,7 +2067,7 @@ TEST_F(StateMachineTest, testStreamMultipleConversational) {
  PrepareConfigureCodecHandler(group);
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  EXPECT_CALL(*mock_iso_manager_, CreateCig(_, _)).Times(1);
  EXPECT_CALL(*mock_iso_manager_, EstablishCis(_)).Times(AtLeast(1));
@@ -2030,7 +2128,7 @@ TEST_F(StateMachineTest, testFailedStreamMultipleConversational) {
  PrepareConfigureCodecHandler(group);
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);
  PrepareReleaseHandler(group);

  EXPECT_CALL(*mock_iso_manager_, CreateCig(_, _)).Times(1);
@@ -2181,7 +2279,7 @@ TEST_F(StateMachineTest, remoteRejectsEnable) {
  PrepareConfigureCodecHandler(group);
  PrepareConfigureQosHandler(group);
  PrepareCtpNotificationError(
      group, ascs::kAseCtpOpcodeEnable,
      group, client_parser::ascs::kCtpOpcodeEnable,
      client_parser::ascs::kCtpResponseCodeUnspecifiedError,
      client_parser::ascs::kCtpResponseNoReason);
  PrepareReleaseHandler(group);
@@ -2621,7 +2719,7 @@ TEST_F(StateMachineTest, testDisableBidirectional) {
  PrepareConfigureQosHandler(group, 3);
  PrepareEnableHandler(group, 3);
  PrepareDisableHandler(group, 3);
  PrepareReceiverStartReady(group, 1);
  PrepareReceiverStartReadyHandler(group, 1);
  PrepareReceiverStopReady(group, 1);

  auto* leAudioDevice = group->GetFirstDevice();
@@ -2971,7 +3069,7 @@ TEST_F(StateMachineTest,
  PrepareConfigureCodecHandler(group, 0, true);
  PrepareConfigureQosHandler(group, 0, true);
  PrepareEnableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);
  PrepareReleaseHandler(group);

  /* Ctp messages we expect:
@@ -3236,7 +3334,7 @@ TEST_F(StateMachineTest, testReleaseBidirectional) {
  PrepareConfigureQosHandler(group, 3);
  PrepareEnableHandler(group, 3);
  PrepareDisableHandler(group, 3);
  PrepareReceiverStartReady(group, 1);
  PrepareReceiverStartReadyHandler(group, 1);
  PrepareReleaseHandler(group, 3);

  auto* leAudioDevice = group->GetFirstDevice();
@@ -3294,7 +3392,7 @@ TEST_F(StateMachineTest, testDisableAndReleaseBidirectional) {
  PrepareConfigureQosHandler(group, 3);
  PrepareEnableHandler(group, 3);
  PrepareDisableHandler(group, 3);
  PrepareReceiverStartReady(group, 1);
  PrepareReceiverStartReadyHandler(group, 1);
  PrepareReceiverStopReady(group, 1);
  PrepareReleaseHandler(group, 3);

@@ -3409,7 +3507,7 @@ TEST_F(StateMachineTest, testAseAutonomousRelease) {
  PrepareConfigureQosHandler(group, 3);
  PrepareEnableHandler(group, 3);
  PrepareDisableHandler(group, 3);
  PrepareReceiverStartReady(group, 1);
  PrepareReceiverStartReadyHandler(group, 1);
  PrepareReceiverStopReady(group, 1);
  PrepareReleaseHandler(group, 3);

@@ -3482,7 +3580,7 @@ TEST_F(StateMachineTest, testAseAutonomousRelease2Devices) {
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareDisableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);
  PrepareReceiverStopReady(group);
  PrepareReleaseHandler(group);

@@ -3543,7 +3641,7 @@ TEST_F(StateMachineTest, testHandlingCachedCodecConfig2Devices) {
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareDisableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);
  PrepareReceiverStopReady(group);
  PrepareReleaseHandler(group);

@@ -3803,7 +3901,7 @@ TEST_F(StateMachineTestAdsp, testStreamConfigurationAdspDownMix) {
  PrepareConfigureCodecHandler(group);
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  InjectInitialIdleNotification(group);

@@ -4409,7 +4507,7 @@ TEST_F(StateMachineTest, testStreamToGettingReadyDevice) {
  PrepareConfigureCodecHandler(group);
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);
  PrepareDisableHandler(group);
  PrepareReleaseHandler(group);

@@ -4458,7 +4556,7 @@ TEST_F(StateMachineTest, testAttachDeviceToTheConversationalStream) {
  PrepareConfigureCodecHandler(group);
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);
  PrepareDisableHandler(group);
  PrepareReleaseHandler(group);

@@ -4743,7 +4841,7 @@ TEST_F(StateMachineTest, StartStreamCachedConfigReconfigInvalidBehavior) {
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareDisableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);
  PrepareReleaseHandler(group);

  InjectInitialIdleNotification(group);
@@ -4851,7 +4949,7 @@ TEST_F(StateMachineTest, BoundedHeadphonesConversationalToMediaChannelCount_2) {
  PrepareEnableHandler(group);
  PrepareDisableHandler(group);
  PrepareReleaseHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  InjectInitialIdleNotification(group);

@@ -4947,7 +5045,7 @@ TEST_F(StateMachineTest, BoundedHeadphonesConversationalToMediaChannelCount_1) {
  PrepareEnableHandler(group);
  PrepareDisableHandler(group);
  PrepareReleaseHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  InjectInitialIdleNotification(group);

@@ -5305,7 +5403,7 @@ TEST_F(StateMachineTest, StreamReconfigureAfterCisLostTwoDevices) {
  PrepareConfigureCodecHandler(group);
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  /* Prepare DisconnectCis mock to not symulate CisDisconnection */
  ON_CALL(*mock_iso_manager_, DisconnectCis).WillByDefault(Return());
@@ -5524,7 +5622,7 @@ TEST_F(StateMachineTest, VerifyThereIsNoDoubleDataPathRemoval) {
  PrepareConfigureQosHandler(group);
  PrepareEnableHandler(group);
  PrepareReleaseHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  EXPECT_CALL(*mock_iso_manager_, CreateCig(_, _)).Times(1);
  EXPECT_CALL(*mock_iso_manager_, EstablishCis(_)).Times(1);
@@ -5586,7 +5684,7 @@ TEST_F(StateMachineTest, StreamStartWithDifferentContextFromConfiguredState) {
  PrepareEnableHandler(group);
  PrepareDisableHandler(group);
  PrepareReleaseHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  InjectInitialIdleNotification(group);

@@ -5659,7 +5757,7 @@ TEST_F(StateMachineTest,
  PrepareEnableHandler(group);
  PrepareDisableHandler(group);
  PrepareReleaseHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  InjectInitialIdleNotification(group);

@@ -5928,7 +6026,7 @@ TEST_F(StateMachineTest, testAutonomousDisableTimeout) {
  PrepareEnableHandler(group);
  PrepareDisableHandler(group);
  PrepareReleaseHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  auto* leAudioDevice = group->GetFirstDevice();
  LeAudioDevice* lastDevice;
@@ -6014,7 +6112,7 @@ TEST_F(StateMachineTest, testAutonomousDisableSuccess) {
  PrepareEnableHandler(group);
  PrepareDisableHandler(group);
  PrepareReleaseHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  auto* leAudioDevice = group->GetFirstDevice();
  LeAudioDevice* lastDevice;
@@ -6110,7 +6208,7 @@ TEST_F(StateMachineTest, testAutonomousDisableCancelOnDisconnect) {
  PrepareEnableHandler(group);
  PrepareDisableHandler(group);
  PrepareReleaseHandler(group);
  PrepareReceiverStartReady(group);
  PrepareReceiverStartReadyHandler(group);

  auto* leAudioDevice = group->GetFirstDevice();
  LeAudioDevice* lastDevice;