Skip to content

Commit 4cfa08a

Browse files
TsunFengVivianNK
authored andcommitted
MdePkg: Add mocks for AcpiTable and more
Description Create mock for AcpiTable, FirmwareVolume2 and AcpiSystemDescriptionTable protocols. Signed-off-by: Vivian Nowka-Keane <[email protected]>
1 parent 14d1a2b commit 4cfa08a

File tree

5 files changed

+349
-0
lines changed

5 files changed

+349
-0
lines changed

MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ struct MockUefiLib {
8989
IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName OPTIONAL,
9090
IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL)
9191
);
92+
93+
MOCK_FUNCTION_DECLARATION (
94+
EFI_STATUS,
95+
EfiCreateEventReadyToBootEx,
96+
(IN EFI_TPL NotifyTpl,
97+
IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
98+
IN VOID *NotifyContext OPTIONAL,
99+
OUT EFI_EVENT *ReadyToBootEvent)
100+
);
92101
};
93102

94103
#endif
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
/** @file MockAcpiSystemDescriptionTable.h
2+
This file declares a mock of ACPI system description tables protocol.
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#ifndef MOCK_ACPI_SYSTEM_DESCRIPTION_TABLE_H_
9+
#define MOCK_ACPI_SYSTEM_DESCRIPTION_TABLE_H_
10+
11+
#include <Library/GoogleTestLib.h>
12+
#include <Library/FunctionMockLib.h>
13+
14+
extern "C" {
15+
#include <Uefi.h>
16+
#include <Protocol/AcpiSystemDescriptionTable.h>
17+
}
18+
19+
struct MockAcpiSdtProtocol {
20+
MOCK_INTERFACE_DECLARATION (MockAcpiSdtProtocol);
21+
22+
MOCK_FUNCTION_DECLARATION (
23+
EFI_STATUS,
24+
GetAcpiTable,
25+
(
26+
IN UINTN Index,
27+
OUT EFI_ACPI_SDT_HEADER **Table,
28+
OUT EFI_ACPI_TABLE_VERSION *Version,
29+
OUT UINTN *TableKey
30+
)
31+
);
32+
33+
MOCK_FUNCTION_DECLARATION (
34+
EFI_STATUS,
35+
RegisterNotify,
36+
(
37+
IN BOOLEAN Register,
38+
IN EFI_ACPI_NOTIFICATION_FN Notification
39+
)
40+
);
41+
42+
MOCK_FUNCTION_DECLARATION (
43+
EFI_STATUS,
44+
Open,
45+
(
46+
IN VOID *Buffer,
47+
OUT EFI_ACPI_HANDLE *Handle
48+
)
49+
);
50+
51+
MOCK_FUNCTION_DECLARATION (
52+
EFI_STATUS,
53+
OpenSdt,
54+
(
55+
IN UINTN TableKey,
56+
OUT EFI_ACPI_HANDLE *Handle
57+
)
58+
);
59+
60+
MOCK_FUNCTION_DECLARATION (
61+
EFI_STATUS,
62+
Close,
63+
(
64+
IN EFI_ACPI_HANDLE Handle
65+
)
66+
);
67+
68+
MOCK_FUNCTION_DECLARATION (
69+
EFI_STATUS,
70+
GetChild,
71+
(
72+
IN EFI_ACPI_HANDLE ParentHandle,
73+
IN OUT EFI_ACPI_HANDLE *Handle
74+
)
75+
);
76+
77+
MOCK_FUNCTION_DECLARATION (
78+
EFI_STATUS,
79+
GetOption,
80+
(
81+
IN EFI_ACPI_HANDLE Handle,
82+
IN UINTN Index,
83+
OUT EFI_ACPI_DATA_TYPE *DataType,
84+
OUT CONST VOID **Data,
85+
OUT UINTN *DataSize
86+
)
87+
);
88+
89+
MOCK_FUNCTION_DECLARATION (
90+
EFI_STATUS,
91+
SetOption,
92+
(
93+
IN EFI_ACPI_HANDLE Handle,
94+
IN UINTN Index,
95+
IN CONST VOID *Data,
96+
IN UINTN DataSize
97+
)
98+
);
99+
100+
MOCK_FUNCTION_DECLARATION (
101+
EFI_STATUS,
102+
FindPath,
103+
(
104+
IN EFI_ACPI_HANDLE HandleIn,
105+
IN VOID *AcpiPath,
106+
OUT EFI_ACPI_HANDLE *HandleOut
107+
)
108+
);
109+
};
110+
111+
MOCK_INTERFACE_DEFINITION (MockAcpiSdtProtocol);
112+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, GetAcpiTable, 4, EFIAPI);
113+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, RegisterNotify, 2, EFIAPI);
114+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, Open, 2, EFIAPI);
115+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, OpenSdt, 2, EFIAPI);
116+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, Close, 1, EFIAPI);
117+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, GetChild, 2, EFIAPI);
118+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, GetOption, 5, EFIAPI);
119+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, SetOption, 4, EFIAPI);
120+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, FindPath, 3, EFIAPI);
121+
122+
EFI_ACPI_SDT_PROTOCOL ACPI_SDT_PROTOCOL_INSTANCE = {
123+
0,
124+
GetAcpiTable, // EFI_ACPI_TABLE_INSTALL_ACPI_TABLE
125+
RegisterNotify, // EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE
126+
Open,
127+
OpenSdt,
128+
Close,
129+
GetChild,
130+
GetOption,
131+
SetOption,
132+
FindPath
133+
};
134+
135+
extern "C" {
136+
EFI_ACPI_SDT_PROTOCOL *gAcpiSdtProtocol = &ACPI_SDT_PROTOCOL_INSTANCE;
137+
}
138+
139+
#endif // MOCK_ACPI_SYSTEM_DESCRIPTION_TABLE_H_
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/** @file MockAcpiTable.h
2+
This file declares a mock of Acpi table protocol.
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#ifndef MOCK_ACPI_TABLE_H_
9+
#define MOCK_ACPI_TABLE_H_
10+
11+
#include <Library/GoogleTestLib.h>
12+
#include <Library/FunctionMockLib.h>
13+
14+
extern "C" {
15+
#include <Uefi.h>
16+
#include <Protocol/AcpiTable.h>
17+
}
18+
19+
struct MockAcpiTableProtocol {
20+
MOCK_INTERFACE_DECLARATION (MockAcpiTableProtocol);
21+
22+
MOCK_FUNCTION_DECLARATION (
23+
EFI_STATUS,
24+
InstallAcpiTable,
25+
(
26+
IN EFI_ACPI_TABLE_PROTOCOL *This,
27+
IN VOID *AcpiTableBuffer,
28+
IN UINTN AcpiTableBufferSize,
29+
OUT UINTN *TableKey
30+
)
31+
);
32+
33+
MOCK_FUNCTION_DECLARATION (
34+
EFI_STATUS,
35+
UninstallAcpiTable,
36+
(
37+
IN EFI_ACPI_TABLE_PROTOCOL *This,
38+
IN UINTN TableKey
39+
)
40+
);
41+
};
42+
43+
MOCK_INTERFACE_DEFINITION (MockAcpiTableProtocol);
44+
MOCK_FUNCTION_DEFINITION (MockAcpiTableProtocol, InstallAcpiTable, 4, EFIAPI);
45+
MOCK_FUNCTION_DEFINITION (MockAcpiTableProtocol, UninstallAcpiTable, 2, EFIAPI);
46+
47+
EFI_ACPI_TABLE_PROTOCOL ACPI_TABLE_PROTOCOL_INSTANCE = {
48+
InstallAcpiTable, // EFI_ACPI_TABLE_INSTALL_ACPI_TABLE
49+
UninstallAcpiTable // EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE
50+
};
51+
52+
extern "C" {
53+
EFI_ACPI_TABLE_PROTOCOL *gAcpiTableProtocol = &ACPI_TABLE_PROTOCOL_INSTANCE;
54+
}
55+
56+
#endif // MOCK_ACPI_TABLE_H_
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
/** @file MockFirmwareVolume2.h
2+
This file declares a mock of Firmware Volume Protocol.
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#ifndef MOCK_FIRMWARE_VOLUME2_H_
9+
#define MOCK_FIRMWARE_VOLUME2_H_
10+
11+
#include <Library/GoogleTestLib.h>
12+
#include <Library/FunctionMockLib.h>
13+
14+
extern "C" {
15+
#include <Uefi.h>
16+
#include <Pi/PiFirmwareVolume.h>
17+
#include <Pi/PiFirmwareFile.h>
18+
#include <Protocol/FirmwareVolume2.h>
19+
}
20+
21+
struct MockFirmwareVolume2Protocol {
22+
MOCK_INTERFACE_DECLARATION (MockFirmwareVolume2Protocol);
23+
24+
MOCK_FUNCTION_DECLARATION (
25+
EFI_STATUS,
26+
GetVolumeAttributes,
27+
(
28+
IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,
29+
OUT EFI_FV_ATTRIBUTES *FvAttributes
30+
)
31+
);
32+
33+
MOCK_FUNCTION_DECLARATION (
34+
EFI_STATUS,
35+
SetVolumeAttributes,
36+
(
37+
IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,
38+
IN OUT EFI_FV_ATTRIBUTES *FvAttributes
39+
)
40+
);
41+
42+
MOCK_FUNCTION_DECLARATION (
43+
EFI_STATUS,
44+
FvReadFile,
45+
(
46+
IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,
47+
IN CONST EFI_GUID *NameGuid,
48+
IN OUT VOID **Buffer,
49+
IN OUT UINTN *BufferSize,
50+
OUT EFI_FV_FILETYPE *FoundType,
51+
OUT EFI_FV_FILE_ATTRIBUTES *FileAttributes,
52+
OUT UINT32 *AuthenticationStatus
53+
)
54+
);
55+
56+
MOCK_FUNCTION_DECLARATION (
57+
EFI_STATUS,
58+
ReadSection,
59+
(
60+
IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,
61+
IN CONST EFI_GUID *NameGuid,
62+
IN EFI_SECTION_TYPE SectionType,
63+
IN UINTN SectionInstance,
64+
IN OUT VOID **Buffer,
65+
IN OUT UINTN *BufferSize,
66+
OUT UINT32 *AuthenticationStatus
67+
)
68+
);
69+
70+
MOCK_FUNCTION_DECLARATION (
71+
EFI_STATUS,
72+
FvWriteFile,
73+
(
74+
IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,
75+
IN UINT32 NumberOfFiles,
76+
IN EFI_FV_WRITE_POLICY WritePolicy,
77+
IN EFI_FV_WRITE_FILE_DATA *FileData
78+
)
79+
);
80+
81+
MOCK_FUNCTION_DECLARATION (
82+
EFI_STATUS,
83+
GetNextFile,
84+
(
85+
IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,
86+
IN OUT VOID *Key,
87+
IN OUT EFI_FV_FILETYPE *FileType,
88+
OUT EFI_GUID *NameGuid,
89+
OUT EFI_FV_FILE_ATTRIBUTES *Attributes,
90+
OUT UINTN *Size
91+
)
92+
);
93+
94+
MOCK_FUNCTION_DECLARATION (
95+
EFI_STATUS,
96+
GetInfo,
97+
(
98+
IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,
99+
IN CONST EFI_GUID *InformationType,
100+
IN OUT UINTN *BufferSize,
101+
OUT VOID *Buffer
102+
)
103+
);
104+
105+
MOCK_FUNCTION_DECLARATION (
106+
EFI_STATUS,
107+
SetInfo,
108+
(
109+
IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,
110+
IN CONST EFI_GUID *InformationType,
111+
IN UINTN BufferSize,
112+
IN CONST VOID *Buffer
113+
)
114+
);
115+
};
116+
117+
MOCK_INTERFACE_DEFINITION (MockFirmwareVolume2Protocol);
118+
MOCK_FUNCTION_DEFINITION (MockFirmwareVolume2Protocol, GetVolumeAttributes, 2, EFIAPI);
119+
MOCK_FUNCTION_DEFINITION (MockFirmwareVolume2Protocol, SetVolumeAttributes, 2, EFIAPI);
120+
MOCK_FUNCTION_DEFINITION (MockFirmwareVolume2Protocol, FV_ReadFile, 7, EFIAPI);
121+
MOCK_FUNCTION_DEFINITION (MockFirmwareVolume2Protocol, ReadSection, 7, EFIAPI);
122+
MOCK_FUNCTION_DEFINITION (MockFirmwareVolume2Protocol, FV_WriteFile, 4, EFIAPI);
123+
MOCK_FUNCTION_DEFINITION (MockFirmwareVolume2Protocol, GetNextFile, 6, EFIAPI);
124+
MOCK_FUNCTION_DEFINITION (MockFirmwareVolume2Protocol, GetInfo, 4, EFIAPI);
125+
MOCK_FUNCTION_DEFINITION (MockFirmwareVolume2Protocol, SetInfo, 4, EFIAPI);
126+
127+
EFI_FIRMWARE_VOLUME2_PROTOCOL FIRMWARE_VOLUME2_PROTOCOL_MOCK = {
128+
GetVolumeAttributes, // EFI_FV_GET_ATTRIBUTES GetVolumeAttributes;
129+
SetVolumeAttributes, // EFI_FV_SET_ATTRIBUTES SetVolumeAttributes;
130+
FvReadFile, // EFI_FV_READ_FILE ReadFile;
131+
ReadSection, // EFI_FV_READ_SECTION ReadSection;
132+
FvWriteFile, // EFI_FV_WRITE_FILE WriteFile;
133+
GetNextFile, // EFI_FV_GET_NEXT_FILE GetNextFile;
134+
0, // UINT32 KeySize;
135+
0, // EFI_HANDLE ParentHandle;
136+
GetInfo, // EFI_FV_GET_INFO GetInfo;
137+
SetInfo // EFI_FV_SET_INFO SetInfo;
138+
};
139+
140+
extern "C" {
141+
EFI_FIRMWARE_VOLUME2_PROTOCOL *gFirmwareVolume2Protocol = &FIRMWARE_VOLUME2_PROTOCOL_MOCK;
142+
}
143+
144+
#endif // MOCK_FIRMWARE_VOLUME2_H_

MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ MOCK_FUNCTION_DEFINITION (MockUefiLib, LookupUnicodeString2, 5, EFIAPI);
1616
MOCK_FUNCTION_DEFINITION (MockUefiLib, AddUnicodeString2, 5, EFIAPI);
1717
MOCK_FUNCTION_DEFINITION (MockUefiLib, FreeUnicodeStringTable, 1, EFIAPI);
1818
MOCK_FUNCTION_DEFINITION (MockUefiLib, EfiLibInstallDriverBindingComponentName2, 6, EFIAPI);
19+
MOCK_FUNCTION_DEFINITION (MockUefiLib, EfiCreateEventReadyToBootEx, 4, EFIAPI);

0 commit comments

Comments
 (0)