@ -23,6 +23,13 @@ static int execute(void)
size_t background ;
size_t attrib ;
efi_status_t ret ;
s16 col ;
u16 cr [ ] = { 0x0d , 0x00 } ;
u16 lf [ ] = { 0x0a , 0x00 } ;
u16 brahmi [ ] = { /* 2 Brahmi letters */
0xD804 , 0xDC05 ,
0xD804 , 0xDC22 ,
0 } ;
/* SetAttribute */
efi_st_printf ( " \n Color palette \n " ) ;
@ -42,6 +49,77 @@ static int execute(void)
efi_st_error ( " TestString failed for ANSI characters \n " ) ;
return EFI_ST_FAILURE ;
}
/* OutputString */
ret = con_out - > output_string ( con_out ,
L " Testing cursor column update \n " ) ;
if ( ret ! = EFI_ST_SUCCESS ) {
efi_st_error ( " OutputString failed for ANSI characters " ) ;
return EFI_ST_FAILURE ;
}
col = con_out - > mode - > cursor_column ;
ret = con_out - > output_string ( con_out , lf ) ;
if ( ret ! = EFI_ST_SUCCESS ) {
efi_st_error ( " OutputString failed for line feed \n " ) ;
return EFI_ST_FAILURE ;
}
if ( con_out - > mode - > cursor_column ! = col ) {
efi_st_error ( " Cursor column changed by line feed \n " ) ;
return EFI_ST_FAILURE ;
}
ret = con_out - > output_string ( con_out , cr ) ;
if ( ret ! = EFI_ST_SUCCESS ) {
efi_st_error ( " OutputString failed for carriage return \n " ) ;
return EFI_ST_FAILURE ;
}
if ( con_out - > mode - > cursor_column ) {
efi_st_error ( " Cursor column not 0 at beginning of line \n " ) ;
return EFI_ST_FAILURE ;
}
ret = con_out - > output_string ( con_out , L " 123 " ) ;
if ( ret ! = EFI_ST_SUCCESS ) {
efi_st_error ( " OutputString failed for ANSI characters \n " ) ;
return EFI_ST_FAILURE ;
}
if ( con_out - > mode - > cursor_column ! = 3 ) {
efi_st_error ( " Cursor column not incremented properly \n " ) ;
return EFI_ST_FAILURE ;
}
ret = con_out - > output_string ( con_out , L " \b " ) ;
if ( ret ! = EFI_ST_SUCCESS ) {
efi_st_error ( " OutputString failed for backspace \n " ) ;
return EFI_ST_FAILURE ;
}
if ( con_out - > mode - > cursor_column ! = 2 ) {
efi_st_error ( " Cursor column not decremented properly \n " ) ;
return EFI_ST_FAILURE ;
}
ret = con_out - > output_string ( con_out , L " \b \b " ) ;
if ( ret ! = EFI_ST_SUCCESS ) {
efi_st_error ( " OutputString failed for backspace \n " ) ;
return EFI_ST_FAILURE ;
}
if ( con_out - > mode - > cursor_column ) {
efi_st_error ( " Cursor column not decremented properly \n " ) ;
return EFI_ST_FAILURE ;
}
ret = con_out - > output_string ( con_out , L " \b \b " ) ;
if ( ret ! = EFI_ST_SUCCESS ) {
efi_st_error ( " OutputString failed for backspace \n " ) ;
return EFI_ST_FAILURE ;
}
if ( con_out - > mode - > cursor_column ) {
efi_st_error ( " Cursor column decremented past zero \n " ) ;
return EFI_ST_FAILURE ;
}
ret = con_out - > output_string ( con_out , brahmi ) ;
if ( ret ! = EFI_ST_SUCCESS ) {
efi_st_todo ( " Unicode output not fully supported \n " ) ;
} else if ( con_out - > mode - > cursor_column ! = 2 ) {
efi_st_printf ( " Unicode not handled properly \n " ) ;
return EFI_ST_FAILURE ;
}
efi_st_printf ( " \n " ) ;
return EFI_ST_SUCCESS ;
}