chromium/ash/system/bluetooth/bluetooth_state_cache_unittest.cc

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ash/system/bluetooth/bluetooth_state_cache.h"

#include "ash/shell.h"
#include "ash/test/ash_test_base.h"
#include "ash/test/ash_test_helper.h"
#include "base/run_loop.h"
#include "chromeos/ash/services/bluetooth_config/fake_adapter_state_controller.h"
#include "chromeos/ash/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom-shared.h"

namespace ash {

using BluetoothStateCacheTest = AshTestBase;

TEST_F(BluetoothStateCacheTest, Basics) {
  auto* state_controller = ash_test_helper()
                               ->bluetooth_config_test_helper()
                               ->fake_adapter_state_controller();

  state_controller->SetSystemState(
      bluetooth_config::mojom::BluetoothSystemState::kDisabled);
  base::RunLoop().RunUntilIdle();
  EXPECT_EQ(bluetooth_config::mojom::BluetoothSystemState::kDisabled,
            Shell::Get()->bluetooth_state_cache()->system_state());

  state_controller->SetSystemState(
      bluetooth_config::mojom::BluetoothSystemState::kEnabled);
  base::RunLoop().RunUntilIdle();
  EXPECT_EQ(bluetooth_config::mojom::BluetoothSystemState::kEnabled,
            Shell::Get()->bluetooth_state_cache()->system_state());
}

}  // namespace ash