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