You've already forked edk2-upstream
mirror of
https://github.com/Dasharo/edk2-upstream.git
synced 2026-03-06 15:03:57 -08:00
48 lines
1.3 KiB
C++
48 lines
1.3 KiB
C++
|
|
/** @file
|
||
|
|
UEFI based application for unit testing the DxeReportStatusCodeLib.
|
||
|
|
|
||
|
|
Copyright (c) Microsoft Corporation.
|
||
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||
|
|
|
||
|
|
**/
|
||
|
|
#include <Library/GoogleTestLib.h>
|
||
|
|
#include <GoogleTest/Library/MockUefiLib.h>
|
||
|
|
#include <GoogleTest/Library/MockUefiBootServicesTableLib.h>
|
||
|
|
|
||
|
|
extern "C" {
|
||
|
|
#include <Uefi.h>
|
||
|
|
#include <Library/ReportStatusCodeLib.h>
|
||
|
|
#include <Library/UefiBootServicesTableLib.h>
|
||
|
|
}
|
||
|
|
|
||
|
|
using namespace testing;
|
||
|
|
|
||
|
|
class DxeReportStatusCodeLibGeneralTest : public Test {
|
||
|
|
protected:
|
||
|
|
StrictMock<MockUefiBootServicesTableLib> BsMock;
|
||
|
|
};
|
||
|
|
|
||
|
|
// Verify that ReportStatusCode does not attempt to locate the ReportStatusCode protocol
|
||
|
|
// on demand if not cached. It should only be updated via events outside of a call to
|
||
|
|
// ReportStatusCode to prevent possible TPL inversion.
|
||
|
|
TEST_F (DxeReportStatusCodeLibGeneralTest, DoNotCallLocateProtocol) {
|
||
|
|
EFI_STATUS Status;
|
||
|
|
|
||
|
|
// LocateProtocol should never be called
|
||
|
|
EXPECT_CALL (BsMock, gBS_LocateProtocol (_, _, _))
|
||
|
|
.Times (0);
|
||
|
|
|
||
|
|
Status = ReportStatusCode (EFI_PROGRESS_CODE, 0x0);
|
||
|
|
ASSERT_EQ (Status, EFI_UNSUPPORTED); // We have not located the protocol, so this is expected.
|
||
|
|
}
|
||
|
|
|
||
|
|
int
|
||
|
|
main (
|
||
|
|
int argc,
|
||
|
|
char *argv[]
|
||
|
|
)
|
||
|
|
{
|
||
|
|
testing::InitGoogleTest (&argc, argv);
|
||
|
|
return RUN_ALL_TESTS ();
|
||
|
|
}
|