summaryrefslogtreecommitdiff
path: root/cras/src/tests/system_state_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cras/src/tests/system_state_unittest.cc')
-rw-r--r--cras/src/tests/system_state_unittest.cc576
1 files changed, 0 insertions, 576 deletions
diff --git a/cras/src/tests/system_state_unittest.cc b/cras/src/tests/system_state_unittest.cc
deleted file mode 100644
index 45224bc9..00000000
--- a/cras/src/tests/system_state_unittest.cc
+++ /dev/null
@@ -1,576 +0,0 @@
-// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <gtest/gtest.h>
-#include <stdio.h>
-#include <string.h>
-
-extern "C" {
-#include "cras_alert.h"
-#include "cras_board_config.h"
-#include "cras_shm.h"
-#include "cras_system_state.h"
-#include "cras_types.h"
-}
-
-namespace {
-static struct cras_alsa_card* kFakeAlsaCard;
-size_t cras_alsa_card_create_called;
-size_t cras_alsa_card_destroy_called;
-static size_t add_stub_called;
-static size_t rm_stub_called;
-static size_t add_task_stub_called;
-static size_t callback_stub_called;
-static void* select_data_value;
-static void* task_data_value;
-static size_t add_callback_called;
-static cras_alert_cb add_callback_cb;
-static void* add_callback_arg;
-static size_t rm_callback_called;
-static cras_alert_cb rm_callback_cb;
-static void* rm_callback_arg;
-static size_t alert_pending_called;
-static char* device_config_dir;
-static const char* cras_alsa_card_config_dir;
-static size_t cras_observer_notify_output_volume_called;
-static size_t cras_observer_notify_output_mute_called;
-static size_t cras_observer_notify_capture_mute_called;
-static size_t cras_observer_notify_suspend_changed_called;
-static size_t cras_observer_notify_num_active_streams_called;
-static size_t cras_observer_notify_input_streams_with_permission_called;
-static size_t cras_iodev_list_reset_for_noise_cancellation_called;
-static struct cras_board_config fake_board_config;
-static size_t cras_alert_process_all_pending_alerts_called;
-
-static void ResetStubData() {
- cras_alsa_card_create_called = 0;
- cras_alsa_card_destroy_called = 0;
- kFakeAlsaCard = reinterpret_cast<struct cras_alsa_card*>(0x33);
- add_stub_called = 0;
- rm_stub_called = 0;
- add_task_stub_called = 0;
- callback_stub_called = 0;
- add_callback_called = 0;
- rm_callback_called = 0;
- alert_pending_called = 0;
- device_config_dir = NULL;
- cras_alsa_card_config_dir = NULL;
- cras_observer_notify_output_volume_called = 0;
- cras_observer_notify_output_mute_called = 0;
- cras_observer_notify_capture_mute_called = 0;
- cras_observer_notify_suspend_changed_called = 0;
- cras_observer_notify_num_active_streams_called = 0;
- cras_observer_notify_input_streams_with_permission_called = 0;
- cras_alert_process_all_pending_alerts_called = 0;
- cras_iodev_list_reset_for_noise_cancellation_called = 0;
- memset(&fake_board_config, 0, sizeof(fake_board_config));
-}
-
-static int add_stub(int fd,
- void (*cb)(void* data, int revents),
- void* callback_data,
- int events,
- void* select_data) {
- add_stub_called++;
- select_data_value = select_data;
- return 0;
-}
-
-static void rm_stub(int fd, void* select_data) {
- rm_stub_called++;
- select_data_value = select_data;
-}
-
-static int add_task_stub(void (*cb)(void* data),
- void* callback_data,
- void* task_data) {
- add_task_stub_called++;
- task_data_value = task_data;
- return 0;
-}
-
-static void callback_stub(void* data, int revents) {
- callback_stub_called++;
-}
-
-static void task_stub(void* data) {
- callback_stub_called++;
-}
-
-static void do_sys_init() {
- char* shm_name;
- ASSERT_GT(asprintf(&shm_name, "/cras-%d", getpid()), 0);
- int rw_shm_fd;
- int ro_shm_fd;
- struct cras_server_state* exp_state =
- (struct cras_server_state*)cras_shm_setup(shm_name, sizeof(*exp_state),
- &rw_shm_fd, &ro_shm_fd);
- if (!exp_state)
- exit(-1);
- cras_system_state_init(device_config_dir, shm_name, rw_shm_fd, ro_shm_fd,
- exp_state, sizeof(*exp_state));
- free(shm_name);
-}
-
-TEST(SystemStateSuite, DefaultVolume) {
- do_sys_init();
- EXPECT_EQ(100, cras_system_get_volume());
- EXPECT_EQ(0, cras_system_get_mute());
- EXPECT_EQ(0, cras_system_get_capture_mute());
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, SetVolume) {
- do_sys_init();
- cras_system_set_volume(0);
- EXPECT_EQ(0, cras_system_get_volume());
- cras_system_set_volume(50);
- EXPECT_EQ(50, cras_system_get_volume());
- cras_system_set_volume(CRAS_MAX_SYSTEM_VOLUME);
- EXPECT_EQ(CRAS_MAX_SYSTEM_VOLUME, cras_system_get_volume());
- cras_system_set_volume(CRAS_MAX_SYSTEM_VOLUME + 1);
- EXPECT_EQ(CRAS_MAX_SYSTEM_VOLUME, cras_system_get_volume());
- cras_system_state_deinit();
- EXPECT_EQ(4, cras_observer_notify_output_volume_called);
-}
-
-TEST(SystemStateSuite, SetMinMaxVolume) {
- do_sys_init();
- cras_system_set_volume_limits(-10000, -600);
- EXPECT_EQ(-10000, cras_system_get_min_volume());
- EXPECT_EQ(-600, cras_system_get_max_volume());
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, SetUserMute) {
- ResetStubData();
- do_sys_init();
-
- EXPECT_EQ(0, cras_system_get_mute());
-
- cras_system_set_user_mute(0);
- EXPECT_EQ(0, cras_system_get_mute());
- EXPECT_EQ(0, cras_observer_notify_output_mute_called);
-
- cras_system_set_user_mute(1);
- EXPECT_EQ(1, cras_system_get_mute());
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
-
- cras_system_set_user_mute(22);
- EXPECT_EQ(1, cras_system_get_mute());
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
-
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, SetMute) {
- ResetStubData();
- do_sys_init();
-
- EXPECT_EQ(0, cras_system_get_mute());
-
- cras_system_set_mute(0);
- EXPECT_EQ(0, cras_system_get_mute());
- EXPECT_EQ(0, cras_observer_notify_output_mute_called);
-
- cras_system_set_mute(1);
- EXPECT_EQ(1, cras_system_get_mute());
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
-
- cras_system_set_mute(22);
- EXPECT_EQ(1, cras_system_get_mute());
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
-
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, SetSystemMuteThenSwitchUserMute) {
- ResetStubData();
- do_sys_init();
-
- EXPECT_EQ(0, cras_system_get_mute());
-
- // Set system mute.
- cras_system_set_mute(1);
-
- // Switching user mute will not notify observer.
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
- cras_system_set_user_mute(1);
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
- cras_system_set_user_mute(0);
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
-
- // Unset system mute.
- cras_system_set_mute(0);
- EXPECT_EQ(2, cras_observer_notify_output_mute_called);
-
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, SetUserMuteThenSwitchSystemMute) {
- ResetStubData();
- do_sys_init();
-
- EXPECT_EQ(0, cras_system_get_mute());
-
- // Set user mute.
- cras_system_set_user_mute(1);
-
- // Switching system mute will not notify observer.
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
- cras_system_set_mute(1);
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
- cras_system_set_mute(0);
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
-
- // Unset user mute.
- cras_system_set_user_mute(0);
- EXPECT_EQ(2, cras_observer_notify_output_mute_called);
-
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, CaptureMuteChangedCallbackMultiple) {
- do_sys_init();
- ResetStubData();
-
- cras_system_set_capture_mute(1);
- EXPECT_EQ(1, cras_system_get_capture_mute());
- EXPECT_EQ(1, cras_observer_notify_capture_mute_called);
- cras_system_set_capture_mute(0);
- EXPECT_EQ(0, cras_system_get_capture_mute());
- EXPECT_EQ(2, cras_observer_notify_capture_mute_called);
-
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, MuteLocked) {
- do_sys_init();
- ResetStubData();
-
- cras_system_set_mute(1);
- EXPECT_EQ(1, cras_system_get_mute());
- EXPECT_EQ(0, cras_system_get_mute_locked());
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
-
- cras_system_set_mute_locked(1);
- cras_system_set_mute(0);
- EXPECT_EQ(1, cras_system_get_mute());
- EXPECT_EQ(1, cras_system_get_mute_locked());
- EXPECT_EQ(1, cras_observer_notify_output_mute_called);
-
- cras_system_set_capture_mute(1);
- EXPECT_EQ(1, cras_system_get_capture_mute());
- EXPECT_EQ(0, cras_system_get_capture_mute_locked());
- EXPECT_EQ(1, cras_observer_notify_capture_mute_called);
-
- cras_system_set_capture_mute_locked(1);
- cras_system_set_capture_mute(0);
- EXPECT_EQ(1, cras_system_get_capture_mute());
- EXPECT_EQ(1, cras_system_get_capture_mute_locked());
- cras_system_state_deinit();
- EXPECT_EQ(2, cras_observer_notify_capture_mute_called);
-}
-
-TEST(SystemStateSuite, Suspend) {
- do_sys_init();
- ResetStubData();
-
- cras_system_set_suspended(1);
- EXPECT_EQ(1, cras_observer_notify_suspend_changed_called);
- EXPECT_EQ(1, cras_alert_process_all_pending_alerts_called);
- EXPECT_EQ(1, cras_system_get_suspended());
-
- cras_system_set_suspended(0);
- EXPECT_EQ(2, cras_observer_notify_suspend_changed_called);
- EXPECT_EQ(0, cras_system_get_suspended());
-
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, AddCardFailCreate) {
- ResetStubData();
- kFakeAlsaCard = NULL;
- cras_alsa_card_info info;
-
- info.card_type = ALSA_CARD_TYPE_INTERNAL;
- info.card_index = 0;
- do_sys_init();
- EXPECT_EQ(-ENOMEM, cras_system_add_alsa_card(&info));
- EXPECT_EQ(1, cras_alsa_card_create_called);
- EXPECT_EQ(cras_alsa_card_config_dir, device_config_dir);
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, AddCard) {
- ResetStubData();
- cras_alsa_card_info info;
-
- info.card_type = ALSA_CARD_TYPE_INTERNAL;
- info.card_index = 0;
- do_sys_init();
- EXPECT_EQ(0, cras_system_add_alsa_card(&info));
- EXPECT_EQ(1, cras_alsa_card_create_called);
- EXPECT_EQ(cras_alsa_card_config_dir, device_config_dir);
- // Adding the same card again should fail.
- ResetStubData();
- EXPECT_NE(0, cras_system_add_alsa_card(&info));
- EXPECT_EQ(0, cras_alsa_card_create_called);
- // Removing card should destroy it.
- cras_system_remove_alsa_card(0);
- EXPECT_EQ(1, cras_alsa_card_destroy_called);
- cras_system_state_deinit();
-}
-
-TEST(SystemSettingsRegisterSelectDescriptor, AddSelectFd) {
- void* stub_data = reinterpret_cast<void*>(44);
- void* select_data = reinterpret_cast<void*>(33);
- int rc;
-
- ResetStubData();
- do_sys_init();
- rc = cras_system_add_select_fd(7, callback_stub, stub_data, POLLIN);
- EXPECT_NE(0, rc);
- EXPECT_EQ(0, add_stub_called);
- EXPECT_EQ(0, rm_stub_called);
- rc = cras_system_set_select_handler(add_stub, rm_stub, select_data);
- EXPECT_EQ(0, rc);
- EXPECT_EQ(0, add_stub_called);
- EXPECT_EQ(0, rm_stub_called);
- rc = cras_system_set_select_handler(add_stub, rm_stub, select_data);
- EXPECT_EQ(-EEXIST, rc);
- EXPECT_EQ(0, add_stub_called);
- EXPECT_EQ(0, rm_stub_called);
- rc = cras_system_add_select_fd(7, callback_stub, stub_data, POLLIN);
- EXPECT_EQ(0, rc);
- EXPECT_EQ(1, add_stub_called);
- EXPECT_EQ(select_data, select_data_value);
- cras_system_rm_select_fd(7);
- EXPECT_EQ(1, rm_stub_called);
- EXPECT_EQ(0, callback_stub_called);
- EXPECT_EQ(select_data, select_data_value);
- cras_system_state_deinit();
-}
-
-TEST(SystemSettingsAddTask, AddTask) {
- void* stub_data = reinterpret_cast<void*>(44);
- void* task_data = reinterpret_cast<void*>(33);
- int rc;
-
- do_sys_init();
- rc = cras_system_add_task(task_stub, stub_data);
- EXPECT_NE(0, rc);
- EXPECT_EQ(0, add_task_stub_called);
- rc = cras_system_set_add_task_handler(add_task_stub, task_data);
- EXPECT_EQ(0, rc);
- EXPECT_EQ(0, add_task_stub_called);
- rc = cras_system_add_task(task_stub, stub_data);
- EXPECT_EQ(0, rc);
- EXPECT_EQ(1, add_task_stub_called);
- EXPECT_EQ(task_data, task_data_value);
-
- cras_system_state_deinit();
-}
-
-TEST(SystemSettingsStreamCount, StreamCount) {
- ResetStubData();
- do_sys_init();
-
- EXPECT_EQ(0, cras_system_state_get_active_streams());
- cras_system_state_stream_added(CRAS_STREAM_OUTPUT, CRAS_CLIENT_TYPE_CHROME);
- EXPECT_EQ(1, cras_system_state_get_active_streams());
- struct cras_timespec ts1;
- cras_system_state_get_last_stream_active_time(&ts1);
- cras_system_state_stream_removed(CRAS_STREAM_OUTPUT, CRAS_CLIENT_TYPE_CHROME);
- EXPECT_EQ(0, cras_system_state_get_active_streams());
- struct cras_timespec ts2;
- cras_system_state_get_last_stream_active_time(&ts2);
- EXPECT_NE(0, memcmp(&ts1, &ts2, sizeof(ts1)));
- cras_system_state_deinit();
-}
-
-TEST(SystemSettingsStreamCount, StreamCountByDirection) {
- ResetStubData();
- do_sys_init();
-
- EXPECT_EQ(0, cras_system_state_get_active_streams());
- cras_system_state_stream_added(CRAS_STREAM_OUTPUT, CRAS_CLIENT_TYPE_CHROME);
- cras_system_state_stream_added(CRAS_STREAM_INPUT, CRAS_CLIENT_TYPE_CHROME);
- cras_system_state_stream_added(CRAS_STREAM_POST_MIX_PRE_DSP,
- CRAS_CLIENT_TYPE_CHROME);
- EXPECT_EQ(1, cras_observer_notify_input_streams_with_permission_called);
- EXPECT_EQ(
- 1, cras_system_state_get_active_streams_by_direction(CRAS_STREAM_OUTPUT));
- EXPECT_EQ(
- 1, cras_system_state_get_active_streams_by_direction(CRAS_STREAM_INPUT));
- EXPECT_EQ(1, cras_system_state_get_active_streams_by_direction(
- CRAS_STREAM_POST_MIX_PRE_DSP));
- EXPECT_EQ(3, cras_system_state_get_active_streams());
- EXPECT_EQ(3, cras_observer_notify_num_active_streams_called);
- cras_system_state_stream_removed(CRAS_STREAM_OUTPUT, CRAS_CLIENT_TYPE_CHROME);
- cras_system_state_stream_removed(CRAS_STREAM_INPUT, CRAS_CLIENT_TYPE_CHROME);
- cras_system_state_stream_removed(CRAS_STREAM_POST_MIX_PRE_DSP,
- CRAS_CLIENT_TYPE_CHROME);
- EXPECT_EQ(2, cras_observer_notify_input_streams_with_permission_called);
- EXPECT_EQ(
- 0, cras_system_state_get_active_streams_by_direction(CRAS_STREAM_OUTPUT));
- EXPECT_EQ(
- 0, cras_system_state_get_active_streams_by_direction(CRAS_STREAM_INPUT));
- EXPECT_EQ(0, cras_system_state_get_active_streams_by_direction(
- CRAS_STREAM_POST_MIX_PRE_DSP));
- EXPECT_EQ(0, cras_system_state_get_active_streams());
- EXPECT_EQ(6, cras_observer_notify_num_active_streams_called);
-
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, IgnoreUCMSuffix) {
- fake_board_config.ucm_ignore_suffix = strdup("TEST1,TEST2,TEST3");
- do_sys_init();
-
- EXPECT_EQ(1, cras_system_check_ignore_ucm_suffix("TEST1"));
- EXPECT_EQ(1, cras_system_check_ignore_ucm_suffix("TEST2"));
- EXPECT_EQ(1, cras_system_check_ignore_ucm_suffix("TEST3"));
- EXPECT_EQ(0, cras_system_check_ignore_ucm_suffix("TEST4"));
- cras_system_state_deinit();
-}
-
-TEST(SystemStateSuite, SetNoiseCancellationEnabled) {
- ResetStubData();
- do_sys_init();
-
- EXPECT_EQ(0, cras_system_get_noise_cancellation_enabled());
-
- cras_system_set_noise_cancellation_enabled(0);
- EXPECT_EQ(0, cras_system_get_noise_cancellation_enabled());
- EXPECT_EQ(0, cras_iodev_list_reset_for_noise_cancellation_called);
-
- cras_system_set_noise_cancellation_enabled(1);
- EXPECT_EQ(1, cras_system_get_noise_cancellation_enabled());
- EXPECT_EQ(1, cras_iodev_list_reset_for_noise_cancellation_called);
-
- cras_system_set_noise_cancellation_enabled(1);
- EXPECT_EQ(1, cras_system_get_noise_cancellation_enabled());
- // cras_iodev_list_reset_for_noise_cancellation shouldn't be called if state
- // is already enabled/disabled.
- EXPECT_EQ(1, cras_iodev_list_reset_for_noise_cancellation_called);
-
- cras_system_set_noise_cancellation_enabled(0);
- EXPECT_EQ(0, cras_system_get_noise_cancellation_enabled());
- EXPECT_EQ(2, cras_iodev_list_reset_for_noise_cancellation_called);
-
- cras_system_state_deinit();
-}
-
-extern "C" {
-
-struct cras_alsa_card* cras_alsa_card_create(
- struct cras_alsa_card_info* info,
- const char* device_config_dir,
- struct cras_device_blocklist* blocklist) {
- cras_alsa_card_create_called++;
- cras_alsa_card_config_dir = device_config_dir;
- return kFakeAlsaCard;
-}
-
-void cras_alsa_card_destroy(struct cras_alsa_card* alsa_card) {
- cras_alsa_card_destroy_called++;
-}
-
-size_t cras_alsa_card_get_index(const struct cras_alsa_card* alsa_card) {
- return 0;
-}
-
-struct cras_device_blocklist* cras_device_blocklist_create(
- const char* config_path) {
- return NULL;
-}
-
-void cras_device_blocklist_destroy(struct cras_device_blocklist* blocklist) {}
-
-struct cras_alert* cras_alert_create(cras_alert_prepare prepare,
- unsigned int flags) {
- return NULL;
-}
-
-void cras_alert_destroy(struct cras_alert* alert) {}
-
-int cras_alert_add_callback(struct cras_alert* alert,
- cras_alert_cb cb,
- void* arg) {
- add_callback_called++;
- add_callback_cb = cb;
- add_callback_arg = arg;
- return 0;
-}
-
-int cras_alert_rm_callback(struct cras_alert* alert,
- cras_alert_cb cb,
- void* arg) {
- rm_callback_called++;
- rm_callback_cb = cb;
- rm_callback_arg = arg;
- return 0;
-}
-
-void cras_alert_pending(struct cras_alert* alert) {
- alert_pending_called++;
-}
-
-cras_tm* cras_tm_init() {
- return static_cast<cras_tm*>(malloc(sizeof(unsigned int)));
-}
-
-void cras_tm_deinit(cras_tm* tm) {
- free(tm);
-}
-
-void cras_observer_notify_output_volume(int32_t volume) {
- cras_observer_notify_output_volume_called++;
-}
-
-void cras_observer_notify_output_mute(int muted,
- int user_muted,
- int mute_locked) {
- cras_observer_notify_output_mute_called++;
-}
-
-void cras_observer_notify_capture_mute(int muted, int mute_locked) {
- cras_observer_notify_capture_mute_called++;
-}
-
-void cras_observer_notify_suspend_changed(int suspended) {
- cras_observer_notify_suspend_changed_called++;
-}
-
-void cras_observer_notify_num_active_streams(enum CRAS_STREAM_DIRECTION dir,
- uint32_t num_active_streams) {
- cras_observer_notify_num_active_streams_called++;
-}
-
-void cras_observer_notify_input_streams_with_permission(
- uint32_t num_input_streams[CRAS_NUM_CLIENT_TYPE]) {
- cras_observer_notify_input_streams_with_permission_called++;
-}
-
-void cras_board_config_get(const char* config_path,
- struct cras_board_config* board_config) {
- *board_config = fake_board_config;
-}
-
-void cras_alert_process_all_pending_alerts() {
- cras_alert_process_all_pending_alerts_called++;
-}
-
-void cras_iodev_list_reset_for_noise_cancellation() {
- cras_iodev_list_reset_for_noise_cancellation_called++;
-}
-
-} // extern "C"
-} // namespace
-
-int main(int argc, char** argv) {
- ::testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}