Acked-by: Liming Gao <gaolim...@byosoft.com.cn> > -----邮件原件----- > 发件人: Michael D Kinney <michael.d.kin...@intel.com> > 发送时间: 2023年4月5日 2:22 > 收件人: devel@edk2.groups.io > 抄送: Chris Johnson <chris.n.john...@intel.com>; Liming Gao > <gaolim...@byosoft.com.cn>; Zhiguang Liu <zhiguang....@intel.com> > 主题: [Patch v2 05/12] MdePkg: Add gmock examples > > From: Chris Johnson <chris.n.john...@intel.com> > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4389 > > Cc: Michael D Kinney <michael.d.kin...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang....@intel.com> > Signed-off-by: Chris Johnson <chris.n.john...@intel.com> > --- > MdePkg/MdePkg.dec | 1 + > MdePkg/Test/MdePkgHostTest.dsc | 2 + > .../Include/GoogleTest/Library/MockUefiLib.h | 39 +++++++++++++++++ > .../Library/MockUefiRuntimeServicesTableLib.h | 42 +++++++++++++++++++ > .../GoogleTest/MockUefiLib/MockUefiLib.cpp | 12 ++++++ > .../GoogleTest/MockUefiLib/MockUefiLib.inf | 33 +++++++++++++++ > .../MockUefiRuntimeServicesTableLib.cpp | 40 > ++++++++++++++++++ > .../MockUefiRuntimeServicesTableLib.inf | 33 +++++++++++++++ > 8 files changed, 202 insertions(+) > create mode 100644 > MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h > create mode 100644 > MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServicesTa > bleLib.h > create mode 100644 > MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.cpp > create mode 100644 > MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf > create mode 100644 > MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/ > MockUefiRuntimeServicesTableLib.cpp > create mode 100644 > MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/ > MockUefiRuntimeServicesTableLib.inf > > diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec > index 2d643bede1d7..2a1d7694aa18 100644 > --- a/MdePkg/MdePkg.dec > +++ b/MdePkg/MdePkg.dec > @@ -26,6 +26,7 @@ [Defines] > [Includes] > Include > Test/UnitTest/Include > + Test/Mock/Include > > [Includes.IA32] > Include/Ia32 > diff --git a/MdePkg/Test/MdePkgHostTest.dsc > b/MdePkg/Test/MdePkgHostTest.dsc > index b8b186dd8b17..35e3ef6d9729 100644 > --- a/MdePkg/Test/MdePkgHostTest.dsc > +++ b/MdePkg/Test/MdePkgHostTest.dsc > @@ -34,3 +34,5 @@ [Components] > # Build HOST_APPLICATION Libraries > # > MdePkg/Library/BaseLib/UnitTestHostBaseLib.inf > + MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf > + > MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/ > MockUefiRuntimeServicesTableLib.inf > diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h > b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h > new file mode 100644 > index 000000000000..dec2c93e1b34 > --- /dev/null > +++ b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h > @@ -0,0 +1,39 @@ > +/** @file > + Google Test mocks for UefiLib > + > + Copyright (c) 2022, Intel Corporation. All rights reserved. > + SPDX-License-Identifier: BSD-2-Clause-Patent > +**/ > + > +#ifndef MOCK_UEFI_LIB_H_ > +#define MOCK_UEFI_LIB_H_ > + > +#include <Library/GoogleTestLib.h> > +#include <Library/FunctionMockLib.h> > +extern "C" { > +#include <Uefi.h> > +#include <Library/UefiLib.h> > +} > + > +struct MockUefiLib { > + MOCK_INTERFACE_DECLARATION (MockUefiLib); > + > + MOCK_FUNCTION_DECLARATION ( > + EFI_STATUS, > + GetVariable2, > + (IN CONST CHAR16 *Name, > + IN CONST EFI_GUID *Guid, > + OUT VOID **Value, > + OUT UINTN *Size OPTIONAL) > + ); > + > + MOCK_FUNCTION_DECLARATION ( > + EFI_STATUS, > + GetEfiGlobalVariable2, > + (IN CONST CHAR16 *Name, > + OUT VOID **Value, > + OUT UINTN *Size OPTIONAL) > + ); > +}; > + > +#endif > diff --git > a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServices > TableLib.h > b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServices > TableLib.h > new file mode 100644 > index 000000000000..afdfc6b85597 > --- /dev/null > +++ > b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServices > TableLib.h > @@ -0,0 +1,42 @@ > +/** @file > + Google Test mocks for UefiRuntimeServicesTableLib > + > + Copyright (c) 2022, Intel Corporation. All rights reserved. > + SPDX-License-Identifier: BSD-2-Clause-Patent > +**/ > + > +#ifndef MOCK_UEFI_RUNTIME_SERVICES_TABLE_LIB_H_ > +#define MOCK_UEFI_RUNTIME_SERVICES_TABLE_LIB_H_ > + > +#include <Library/GoogleTestLib.h> > +#include <Library/FunctionMockLib.h> > +extern "C" { > +#include <Uefi.h> > +#include <Library/UefiRuntimeServicesTableLib.h> > +} > + > +struct MockUefiRuntimeServicesTableLib { > + MOCK_INTERFACE_DECLARATION (MockUefiRuntimeServicesTableLib); > + > + MOCK_FUNCTION_DECLARATION ( > + EFI_STATUS, > + gRT_GetVariable, > + (IN CHAR16 *VariableName, > + IN EFI_GUID *VendorGuid, > + OUT UINT32 *Attributes OPTIONAL, > + IN OUT UINTN *DataSize, > + OUT VOID *Data) > + ); > + > + MOCK_FUNCTION_DECLARATION ( > + EFI_STATUS, > + gRT_SetVariable, > + (IN CHAR16 *VariableName, > + IN EFI_GUID *VendorGuid, > + IN UINT32 Attributes, > + IN UINTN DataSize, > + IN VOID *Data) > + ); > +}; > + > +#endif > diff --git > a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.cpp > b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.cpp > new file mode 100644 > index 000000000000..5339d040c999 > --- /dev/null > +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.cpp > @@ -0,0 +1,12 @@ > +/** @file > + Google Test mocks for UefiLib > + > + Copyright (c) 2022, Intel Corporation. All rights reserved. > + SPDX-License-Identifier: BSD-2-Clause-Patent > +**/ > +#include <GoogleTest/Library/MockUefiLib.h> > + > +MOCK_INTERFACE_DEFINITION(MockUefiLib); > + > +MOCK_FUNCTION_DEFINITION(MockUefiLib, GetVariable2, 4, EFIAPI); > +MOCK_FUNCTION_DEFINITION(MockUefiLib, GetEfiGlobalVariable2, 3, > EFIAPI); > diff --git > a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf > b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf > new file mode 100644 > index 000000000000..1a7461e44449 > --- /dev/null > +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf > @@ -0,0 +1,33 @@ > +## @file > +# Google Test mocks for UefiLib > +# > +# Copyright (c) 2022, Intel Corporation. All rights reserved. > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +## > + > +[Defines] > + INF_VERSION = 0x00010005 > + BASE_NAME = MockUefiLib > + FILE_GUID = > 47211F7A-6D90-4DFB-BDF9-610B69197C2E > + MODULE_TYPE = HOST_APPLICATION > + VERSION_STRING = 1.0 > + LIBRARY_CLASS = UefiLib > + > +# > +# The following information is for reference only and not required by the > build tools. > +# > +# VALID_ARCHITECTURES = IA32 X64 > +# > + > +[Sources] > + MockUefiLib.cpp > + > +[Packages] > + MdePkg/MdePkg.dec > + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec > + > +[LibraryClasses] > + GoogleTestLib > + > +[BuildOptions] > + MSFT:*_*_*_CC_FLAGS = /EHsc > diff --git > a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib > /MockUefiRuntimeServicesTableLib.cpp > b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib > /MockUefiRuntimeServicesTableLib.cpp > new file mode 100644 > index 000000000000..ecd1ba82366c > --- /dev/null > +++ > b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib > /MockUefiRuntimeServicesTableLib.cpp > @@ -0,0 +1,40 @@ > +/** @file > + Google Test mocks for UefiRuntimeServicesTableLib > + > + Copyright (c) 2022, Intel Corporation. All rights reserved. > + SPDX-License-Identifier: BSD-2-Clause-Patent > +**/ > +#include <GoogleTest/Library/MockUefiRuntimeServicesTableLib.h> > + > +MOCK_INTERFACE_DEFINITION(MockUefiRuntimeServicesTableLib); > + > +MOCK_FUNCTION_DEFINITION(MockUefiRuntimeServicesTableLib, > gRT_GetVariable, 5, EFIAPI); > +MOCK_FUNCTION_DEFINITION(MockUefiRuntimeServicesTableLib, > gRT_SetVariable, 5, EFIAPI); > + > +static EFI_RUNTIME_SERVICES localRt = { > + {0}, // EFI_TABLE_HEADER > + > + NULL, // EFI_GET_TIME > + NULL, // EFI_SET_TIME > + NULL, // EFI_GET_WAKEUP_TIME > + NULL, // EFI_SET_WAKEUP_TIME > + > + NULL, // EFI_SET_VIRTUAL_ADDRESS_MAP > + NULL, // EFI_CONVERT_POINTER > + > + gRT_GetVariable, // EFI_GET_VARIABLE > + NULL, // EFI_GET_NEXT_VARIABLE_NAME > + gRT_SetVariable, // EFI_SET_VARIABLE > + > + NULL, // EFI_GET_NEXT_HIGH_MONO_COUNT > + NULL, // EFI_RESET_SYSTEM > + > + NULL, // EFI_UPDATE_CAPSULE > + NULL, // EFI_QUERY_CAPSULE_CAPABILITIES > + > + NULL, // EFI_QUERY_VARIABLE_INFO > +}; > + > +extern "C" { > + EFI_RUNTIME_SERVICES* gRT = &localRt; > +} > diff --git > a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib > /MockUefiRuntimeServicesTableLib.inf > b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib > /MockUefiRuntimeServicesTableLib.inf > new file mode 100644 > index 000000000000..7ba74d93bfc2 > --- /dev/null > +++ > b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib > /MockUefiRuntimeServicesTableLib.inf > @@ -0,0 +1,33 @@ > +## @file > +# Google Test mocks for UefiRuntimeServicesTableLib > +# > +# Copyright (c) 2022, Intel Corporation. All rights reserved. > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +## > + > +[Defines] > + INF_VERSION = 0x00010005 > + BASE_NAME = > MockUefiRuntimeServicesTableLib > + FILE_GUID = > 0A0E13C2-4176-4293-89C7-C2497AA31B92 > + MODULE_TYPE = HOST_APPLICATION > + VERSION_STRING = 1.0 > + LIBRARY_CLASS = UefiRuntimeServicesTableLib > + > +# > +# The following information is for reference only and not required by the > build tools. > +# > +# VALID_ARCHITECTURES = IA32 X64 > +# > + > +[Sources] > + MockUefiRuntimeServicesTableLib.cpp > + > +[Packages] > + MdePkg/MdePkg.dec > + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec > + > +[LibraryClasses] > + GoogleTestLib > + > +[BuildOptions] > + MSFT:*_*_*_CC_FLAGS = /EHsc > -- > 2.39.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#102581): https://edk2.groups.io/g/devel/message/102581 Mute This Topic: https://groups.io/mt/98096536/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-