blob: 6e8c90cc8bc9627a2d9e24dab0e868aa6bafa5a6 [file] [log] [blame]
Heinrich Schuchardt45bb4dc2017-10-18 18:13:19 +02001/*
2 * efi_selftest_textoutput
3 *
4 * Copyright (c) 2017 Heinrich Schuchardt <xypron.glpk@gmx.de>
5 *
6 * SPDX-License-Identifier: GPL-2.0+
7 *
8 * Test the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.
9 *
10 * The following services are tested:
11 * OutputString, TestString, SetAttribute.
12 */
13
14#include <efi_selftest.h>
15
16/*
17 * Execute unit test.
18 *
19 * @return: EFI_ST_SUCCESS for success
20 */
21static int execute(void)
22{
23 size_t foreground;
24 size_t background;
25 size_t attrib;
26 efi_status_t ret;
27
28 /* SetAttribute */
29 efi_st_printf("\nColor palette\n");
30 for (foreground = 0; foreground < 0x10; ++foreground) {
31 for (background = 0; background < 0x80; background += 0x10) {
32 attrib = foreground | background;
33 con_out->set_attribute(con_out, attrib);
34 efi_st_printf("%p", (void *)attrib);
35 }
36 con_out->set_attribute(con_out, 0);
37 efi_st_printf("\n");
38 }
39 /* TestString */
40 ret = con_out->test_string(con_out,
41 L" !\"#$%&'()*+,-./0-9:;<=>?@A-Z[\\]^_`a-z{|}~\n");
42 if (ret != EFI_ST_SUCCESS) {
43 efi_st_error("TestString failed for ANSI characters\n");
44 return EFI_ST_FAILURE;
45 }
46 return EFI_ST_SUCCESS;
47}
48
49EFI_UNIT_TEST(textoutput) = {
50 .name = "text output",
51 .phase = EFI_EXECUTE_BEFORE_BOOTTIME_EXIT,
52 .execute = execute,
53};