xref: /aosp_15_r20/external/coreboot/tests/console/routing-test.c (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include "../console/init.c"
4 
5 #include <console/console.h>
6 #include <stdlib.h>
7 #include <string.h>
8 #include <stdint.h>
9 #include <tests/test.h>
10 
11 struct log_combinations_t {
12 	int log_lvl;
13 	int msg_lvl;
14 	int behavior;
15 } combinations[] = {
16 	{.log_lvl = -1, .msg_lvl = BIOS_ERR, .behavior = CONSOLE_LOG_NONE},
17 	{.log_lvl = -1, .msg_lvl = BIOS_SPEW, .behavior = CONSOLE_LOG_NONE},
18 
19 	{.log_lvl = BIOS_DEBUG, .msg_lvl = BIOS_ERR, .behavior = CONSOLE_LOG_ALL},
20 	{.log_lvl = BIOS_DEBUG, .msg_lvl = BIOS_DEBUG, .behavior = CONSOLE_LOG_ALL},
21 	{.log_lvl = BIOS_DEBUG, .msg_lvl = BIOS_SPEW, .behavior = CONSOLE_LOG_NONE},
22 
23 	{.log_lvl = BIOS_SPEW, .msg_lvl = BIOS_ERR, .behavior = CONSOLE_LOG_ALL},
24 	{.log_lvl = BIOS_SPEW, .msg_lvl = BIOS_DEBUG, .behavior = CONSOLE_LOG_ALL},
25 	{.log_lvl = BIOS_SPEW, .msg_lvl = BIOS_SPEW, .behavior = CONSOLE_LOG_ALL},
26 
27 #if CONFIG(CONSOLE_CBMEM)
28 	{.log_lvl = BIOS_WARNING, .msg_lvl = BIOS_ERR, .behavior = CONSOLE_LOG_ALL},
29 	{.log_lvl = BIOS_WARNING, .msg_lvl = BIOS_DEBUG, .behavior = CONSOLE_LOG_FAST},
30 	{.log_lvl = BIOS_WARNING, .msg_lvl = BIOS_SPEW, .behavior = CONSOLE_LOG_NONE},
31 
32 #else
33 	{.log_lvl = BIOS_WARNING, .msg_lvl = BIOS_ERR, .behavior = CONSOLE_LOG_ALL},
34 	{.log_lvl = BIOS_WARNING, .msg_lvl = BIOS_DEBUG, .behavior = CONSOLE_LOG_NONE},
35 	{.log_lvl = BIOS_WARNING, .msg_lvl = BIOS_SPEW, .behavior = CONSOLE_LOG_NONE},
36 #endif
37 };
38 
39 
test_console_log_level(void ** state)40 static void test_console_log_level(void **state)
41 {
42 	for (int i = 0; i < ARRAY_SIZE(combinations); i++) {
43 		console_loglevel = combinations[i].log_lvl;
44 		assert_int_equal(combinations[i].behavior,
45 				 console_log_level(combinations[i].msg_lvl));
46 	}
47 }
48 
setup_console_log_level(void ** state)49 static int setup_console_log_level(void **state)
50 {
51 	console_inited = 1;
52 	return 0;
53 }
54 
teardown_console_log_level(void ** state)55 static int teardown_console_log_level(void **state)
56 {
57 	console_inited = 0;
58 	return 0;
59 }
60 
main(void)61 int main(void)
62 {
63 	const struct CMUnitTest tests[] = {
64 		cmocka_unit_test_setup_teardown(test_console_log_level, setup_console_log_level,
65 						teardown_console_log_level),
66 	};
67 
68 	return cb_run_group_tests(tests, NULL, NULL);
69 }
70