| /** @file | |
| Unit Test Debug Assert Library | |
| Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #include <Uefi.h> | |
| #include <Library/BaseLib.h> | |
| #include <Library/UnitTestLib.h> | |
| /// | |
| /// Point to jump buffer used with SetJump()/LongJump() to test if a function | |
| /// under test generates an expected ASSERT() condition. | |
| /// | |
| BASE_LIBRARY_JUMP_BUFFER *gUnitTestExpectAssertFailureJumpBuffer = NULL; | |
| /** | |
| Unit test library replacement for DebugAssert() in DebugLib. | |
| If FileName is NULL, then a <FileName> string of "(NULL) Filename" is printed. | |
| If Description is NULL, then a <Description> string of "(NULL) Description" is printed. | |
| @param FileName The pointer to the name of the source file that generated the assert condition. | |
| @param LineNumber The line number in the source file that generated the assert condition | |
| @param Description The pointer to the description of the assert condition. | |
| **/ | |
| VOID | |
| EFIAPI | |
| UnitTestDebugAssert ( | |
| IN CONST CHAR8 *FileName, | |
| IN UINTN LineNumber, | |
| IN CONST CHAR8 *Description | |
| ) | |
| { | |
| CHAR8 Message[256]; | |
| if (gUnitTestExpectAssertFailureJumpBuffer != NULL) { | |
| UT_LOG_INFO ("Detected expected ASSERT: %a(%d): %a\n", FileName, LineNumber, Description); | |
| LongJump (gUnitTestExpectAssertFailureJumpBuffer, 1); | |
| } else { | |
| AsciiStrCpyS (Message, sizeof (Message), "Detected unexpected ASSERT("); | |
| AsciiStrCatS (Message, sizeof (Message), Description); | |
| AsciiStrCatS (Message, sizeof (Message), ")"); | |
| UnitTestAssertTrue (FALSE, "", LineNumber, FileName, Message); | |
| } | |
| } |