mirror of
https://github.com/aydencharles/onionHEN.git
synced 2026-10-22 11:53:07 -05:00
60 lines
2.3 KiB
C
60 lines
2.3 KiB
C
#include "test_harness.h"
|
|
|
|
#include "util_language.h"
|
|
|
|
#include <onion/notify_i18n.h>
|
|
|
|
void onion_test_system_language_configure(int result, int value);
|
|
|
|
static int test_refresh_preserves_last_valid_language(void) {
|
|
onion_test_system_language_configure(0, 11);
|
|
TEST_ASSERT_TRUE(util_refresh_system_language());
|
|
TEST_ASSERT_EQ_INT(11, util_cached_system_language());
|
|
util_apply_ui_language(0);
|
|
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_ZH_HANS, onion_notify_get_language());
|
|
|
|
onion_test_system_language_configure(-1, 1);
|
|
TEST_ASSERT_TRUE(!util_refresh_system_language());
|
|
TEST_ASSERT_EQ_INT(11, util_cached_system_language());
|
|
util_apply_ui_language(0);
|
|
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_ZH_HANS, onion_notify_get_language());
|
|
|
|
onion_test_system_language_configure(0, 1);
|
|
TEST_ASSERT_TRUE(util_refresh_system_language());
|
|
TEST_ASSERT_EQ_INT(1, util_cached_system_language());
|
|
util_apply_ui_language(0);
|
|
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_EN, onion_notify_get_language());
|
|
return 0;
|
|
}
|
|
|
|
static int test_store_reapplies_runtime_language(void) {
|
|
/* Mirrors the daemon → util IPC push: a fresh console language with
|
|
* ui_lang=system must cascade to the notification language. SCE 3 = Spanish. */
|
|
util_store_system_language(3);
|
|
TEST_ASSERT_EQ_INT(3, util_cached_system_language());
|
|
util_apply_ui_language(0);
|
|
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_ES, onion_notify_get_language());
|
|
|
|
util_store_system_language(1);
|
|
util_apply_ui_language(0);
|
|
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_EN, onion_notify_get_language());
|
|
|
|
/* An explicit Toolbox language keeps winning over the pushed console lang. */
|
|
util_store_system_language(4);
|
|
util_apply_ui_language(9);
|
|
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_ES, onion_notify_get_language());
|
|
|
|
/* Keep later suites independent from this process-global language state. */
|
|
util_store_system_language(1);
|
|
util_apply_ui_language(0);
|
|
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_EN, onion_notify_get_language());
|
|
return 0;
|
|
}
|
|
|
|
int test_util_language_suite(void) {
|
|
return onion_test_run("util_language.refresh_preserves_last_valid",
|
|
test_refresh_preserves_last_valid_language) +
|
|
onion_test_run("util_language.store_reapplies_runtime_language",
|
|
test_store_reapplies_runtime_language);
|
|
}
|