efi_selftest: provide test for EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
The following services are tested: OutputString, TestString, SetAttribute. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
83dee949cb
commit
7406f824b8
@ -17,6 +17,8 @@ CFLAGS_efi_selftest_exitbootservices.o := $(CFLAGS_EFI)
|
||||
CFLAGS_REMOVE_efi_selftest_exitbootservices.o := $(CFLAGS_NON_EFI)
|
||||
CFLAGS_efi_selftest_snp.o := $(CFLAGS_EFI)
|
||||
CFLAGS_REMOVE_efi_selftest_snp.o := $(CFLAGS_NON_EFI)
|
||||
CFLAGS_efi_selftest_textoutput.o := $(CFLAGS_EFI)
|
||||
CFLAGS_REVMOE_efi_selftest_textoutput.o := $(CFLAGS_NON_EFI)
|
||||
CFLAGS_efi_selftest_tpl.o := $(CFLAGS_EFI)
|
||||
CFLAGS_REMOVE_efi_selftest_tpl.o := $(CFLAGS_NON_EFI)
|
||||
CFLAGS_efi_selftest_util.o := $(CFLAGS_EFI)
|
||||
@ -30,6 +32,7 @@ efi_selftest_console.o \
|
||||
efi_selftest_events.o \
|
||||
efi_selftest_exitbootservices.o \
|
||||
efi_selftest_snp.o \
|
||||
efi_selftest_textoutput.o \
|
||||
efi_selftest_tpl.o \
|
||||
efi_selftest_util.o \
|
||||
efi_selftest_watchdog.o
|
||||
|
53
lib/efi_selftest/efi_selftest_textoutput.c
Normal file
53
lib/efi_selftest/efi_selftest_textoutput.c
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* efi_selftest_textoutput
|
||||
*
|
||||
* Copyright (c) 2017 Heinrich Schuchardt <xypron.glpk@gmx.de>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*
|
||||
* Test the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.
|
||||
*
|
||||
* The following services are tested:
|
||||
* OutputString, TestString, SetAttribute.
|
||||
*/
|
||||
|
||||
#include <efi_selftest.h>
|
||||
|
||||
/*
|
||||
* Execute unit test.
|
||||
*
|
||||
* @return: EFI_ST_SUCCESS for success
|
||||
*/
|
||||
static int execute(void)
|
||||
{
|
||||
size_t foreground;
|
||||
size_t background;
|
||||
size_t attrib;
|
||||
efi_status_t ret;
|
||||
|
||||
/* SetAttribute */
|
||||
efi_st_printf("\nColor palette\n");
|
||||
for (foreground = 0; foreground < 0x10; ++foreground) {
|
||||
for (background = 0; background < 0x80; background += 0x10) {
|
||||
attrib = foreground | background;
|
||||
con_out->set_attribute(con_out, attrib);
|
||||
efi_st_printf("%p", (void *)attrib);
|
||||
}
|
||||
con_out->set_attribute(con_out, 0);
|
||||
efi_st_printf("\n");
|
||||
}
|
||||
/* TestString */
|
||||
ret = con_out->test_string(con_out,
|
||||
L" !\"#$%&'()*+,-./0-9:;<=>?@A-Z[\\]^_`a-z{|}~\n");
|
||||
if (ret != EFI_ST_SUCCESS) {
|
||||
efi_st_error("TestString failed for ANSI characters\n");
|
||||
return EFI_ST_FAILURE;
|
||||
}
|
||||
return EFI_ST_SUCCESS;
|
||||
}
|
||||
|
||||
EFI_UNIT_TEST(textoutput) = {
|
||||
.name = "text output",
|
||||
.phase = EFI_EXECUTE_BEFORE_BOOTTIME_EXIT,
|
||||
.execute = execute,
|
||||
};
|
Loading…
Reference in New Issue
Block a user