diff --git a/ShellPkg/Test/Mock/Include/GoogleTest/Library/MockShellCommandLib.h b/ShellPkg/Test/Mock/Include/GoogleTest/Library/MockShellCommandLib.h new file mode 100644 index 0000000000..b3ac314625 --- /dev/null +++ b/ShellPkg/Test/Mock/Include/GoogleTest/Library/MockShellCommandLib.h @@ -0,0 +1,269 @@ +/** @file MockShellCommandLib.h + Google Test mocks for ShellCommandLib + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#ifndef MOCK_SHELL_COMMAND_LIB_H_ +#define MOCK_SHELL_COMMAND_LIB_H_ + +#include +#include +extern "C" { + #include + #include +} + +struct MockShellCommandLib { + MOCK_INTERFACE_DECLARATION (MockShellCommandLib); + + MOCK_FUNCTION_DECLARATION ( + RETURN_STATUS, + ShellCommandRegisterCommandName, + (IN CONST CHAR16 *CommandString, + IN SHELL_RUN_COMMAND CommandHandler, + IN SHELL_GET_MAN_FILENAME GetManFileName, + IN UINT32 ShellMinSupportLevel, + IN CONST CHAR16 *ProfileName, + IN CONST BOOLEAN CanAffectLE, + IN CONST EFI_HII_HANDLE HiiHandle, + IN CONST EFI_STRING_ID ManFormatHelp) + ); + + MOCK_FUNCTION_DECLARATION ( + RETURN_STATUS, + ShellCommandRunCommandHandler, + (IN CONST CHAR16 *CommandString, + IN OUT SHELL_STATUS *RetVal, + IN OUT BOOLEAN *CanAffectLE OPTIONAL) + ); + + MOCK_FUNCTION_DECLARATION ( + CONST CHAR16 *, + ShellCommandGetManFileNameHandler, + (IN CONST CHAR16 *CommandString) + ); + + MOCK_FUNCTION_DECLARATION ( + CONST COMMAND_LIST *, + ShellCommandGetCommandList, + (IN CONST BOOLEAN Sort) + ); + + MOCK_FUNCTION_DECLARATION ( + RETURN_STATUS, + ShellCommandRegisterAlias, + (IN CONST CHAR16 *Command, + IN CONST CHAR16 *Alias) + ); + + MOCK_FUNCTION_DECLARATION ( + CONST ALIAS_LIST *, + ShellCommandGetInitAliasList, + () + ); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + ShellCommandIsOnAliasList, + (IN CONST CHAR16 *Alias) + ); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + ShellCommandIsCommandOnList, + (IN CONST CHAR16 *CommandString) + ); + + MOCK_FUNCTION_DECLARATION ( + CHAR16 *, + ShellCommandGetCommandHelp, + (IN CONST CHAR16 *CommandString) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + CommandInit, + () + ); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + ShellCommandGetEchoState, + () + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + ShellCommandSetEchoState, + (IN BOOLEAN State) + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + ShellCommandRegisterExit, + (IN BOOLEAN ScriptOnly, + IN CONST UINT64 ErrorCode) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + ShellCommandGetExitCode, + () + ); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + ShellCommandGetExit, + () + ); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + ShellCommandGetScriptExit, + () + ); + + MOCK_FUNCTION_DECLARATION ( + SCRIPT_FILE *, + ShellCommandGetCurrentScriptFile, + () + ); + + MOCK_FUNCTION_DECLARATION ( + SCRIPT_FILE *, + ShellCommandSetNewScript, + (IN SCRIPT_FILE *Script OPTIONAL) + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + DeleteScriptFileStruct, + (IN SCRIPT_FILE *Script) + ); + + MOCK_FUNCTION_DECLARATION ( + CONST CHAR16 *, + ShellCommandGetProfileList, + () + ); + + MOCK_FUNCTION_DECLARATION ( + CHAR16 *, + ShellCommandCreateNewMappingName, + (IN CONST SHELL_MAPPING_TYPE Type) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + ShellCommandConsistMappingInitialize, + (EFI_DEVICE_PATH_PROTOCOL ***Table) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + ShellCommandConsistMappingUnInitialize, + (EFI_DEVICE_PATH_PROTOCOL **Table) + ); + + MOCK_FUNCTION_DECLARATION ( + CHAR16 *, + ShellCommandConsistMappingGenMappingName, + (IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, + IN EFI_DEVICE_PATH_PROTOCOL **Table) + ); + + MOCK_FUNCTION_DECLARATION ( + SHELL_MAP_LIST *, + ShellCommandFindMapItem, + (IN CONST CHAR16 *MapKey) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + ShellCommandAddMapItemAndUpdatePath, + (IN CONST CHAR16 *Name, + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, + IN CONST UINT64 Flags, + IN CONST BOOLEAN Path) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + ShellCommandCreateInitialMappingsAndPaths, + () + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + ShellCommandUpdateMapping, + () + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_FILE_PROTOCOL *, + ConvertShellHandleToEfiFileProtocol, + (IN CONST SHELL_FILE_HANDLE Handle) + ); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + ShellFileHandleRemove, + (IN CONST SHELL_FILE_HANDLE Handle) + ); + + MOCK_FUNCTION_DECLARATION ( + SHELL_FILE_HANDLE, + ConvertEfiFileProtocolToShellHandle, + (IN CONST EFI_FILE_PROTOCOL *Handle, + IN CONST CHAR16 *Path) + ); + + MOCK_FUNCTION_DECLARATION ( + CONST CHAR16 *, + ShellFileHandleGetPath, + (IN CONST SHELL_FILE_HANDLE Handle) + ); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + ShellFileHandleEof, + (IN SHELL_FILE_HANDLE Handle) + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + FreeBufferList, + (IN BUFFER_LIST *List) + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + DumpHex, + (IN UINTN Indent, + IN UINTN Offset, + IN UINTN DataSize, + IN VOID *UserData) + ); + + MOCK_FUNCTION_DECLARATION ( + CHAR16 *, + CatSDumpHex, + (IN CHAR16 *Buffer, + IN UINTN Indent, + IN UINTN Offset, + IN UINTN DataSize, + IN VOID *UserData) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + ShellSortFileList, + (IN OUT EFI_SHELL_FILE_INFO **FileList, + OUT EFI_SHELL_FILE_INFO **Duplicates OPTIONAL, + IN SHELL_SORT_FILE_LIST Order) + ); +}; + +#endif diff --git a/ShellPkg/Test/Mock/Library/GoogleTest/MockShellCommandLib/MockShellCommandLib.cpp b/ShellPkg/Test/Mock/Library/GoogleTest/MockShellCommandLib/MockShellCommandLib.cpp new file mode 100644 index 0000000000..31c498adb9 --- /dev/null +++ b/ShellPkg/Test/Mock/Library/GoogleTest/MockShellCommandLib/MockShellCommandLib.cpp @@ -0,0 +1,48 @@ +/** @file MockShellCommandLib.cpp + Google Test mocks for ShellCommandLib + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include + +MOCK_INTERFACE_DEFINITION (MockShellCommandLib); + +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRegisterCommandName, 8, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRunCommandHandler, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetManFileNameHandler, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetCommandList, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRegisterAlias, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetInitAliasList, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandIsOnAliasList, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandIsCommandOnList, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetCommandHelp, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, CommandInit, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetEchoState, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandSetEchoState, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRegisterExit, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetExitCode, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetExit, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetScriptExit, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetCurrentScriptFile, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandSetNewScript, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, DeleteScriptFileStruct, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetProfileList, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandCreateNewMappingName, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandConsistMappingInitialize, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandConsistMappingUnInitialize, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandConsistMappingGenMappingName, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandFindMapItem, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandAddMapItemAndUpdatePath, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandCreateInitialMappingsAndPaths, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandUpdateMapping, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ConvertShellHandleToEfiFileProtocol, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellFileHandleRemove, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ConvertEfiFileProtocolToShellHandle, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellFileHandleGetPath, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellFileHandleEof, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, FreeBufferList, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, DumpHex, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, CatSDumpHex, 5, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellSortFileList, 3, EFIAPI); diff --git a/ShellPkg/Test/Mock/Library/GoogleTest/MockShellCommandLib/MockShellCommandLib.inf b/ShellPkg/Test/Mock/Library/GoogleTest/MockShellCommandLib/MockShellCommandLib.inf new file mode 100644 index 0000000000..de5a410293 --- /dev/null +++ b/ShellPkg/Test/Mock/Library/GoogleTest/MockShellCommandLib/MockShellCommandLib.inf @@ -0,0 +1,34 @@ +## @file MockShellCommandLib.inf +# Google Test mocks for ShellCommandLib +# +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = MockShellCommandLib + FILE_GUID = 390bea01-510b-51bb-861f-369caef02153 + MODULE_TYPE = HOST_APPLICATION + VERSION_STRING = 1.0 + LIBRARY_CLASS = ShellCommandLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + MockShellCommandLib.cpp + +[Packages] + ShellPkg/ShellPkg.dec + MdePkg/MdePkg.dec + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec + +[LibraryClasses] + GoogleTestLib + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /EHs /bigobj diff --git a/ShellPkg/Test/ShellPkgHostTest.dsc b/ShellPkg/Test/ShellPkgHostTest.dsc index 6c0aebd079..feeb656692 100644 --- a/ShellPkg/Test/ShellPkgHostTest.dsc +++ b/ShellPkg/Test/ShellPkgHostTest.dsc @@ -29,3 +29,4 @@ SKUID_IDENTIFIER = DEFAULT # Build HOST_APPLICATION Libraries With GoogleTest # ShellPkg/Test/Mock/Library/GoogleTest/MockShellLib/MockShellLib.inf + ShellPkg/Test/Mock/Library/GoogleTest/MockShellCommandLib/MockShellCommandLib.inf