From dff3d3811f93080ff08e7dd339ae087f85875d27 Mon Sep 17 00:00:00 2001 From: Doug Flick Date: Wed, 8 May 2024 22:56:32 -0700 Subject: [PATCH] MdePkg: Add MockHash2 Protocol for testing This commit adds a new MockHash2 protocol to the MdePkg. This allows the unit tests to pick up the new protocol and use it for testing. Cc: Michael D Kinney Cc: Liming Gao Cc: Zhiguang Liu Signed-off-by: Doug Flick [MSFT] Reviewed-by: Liming Gao --- .../Include/GoogleTest/Protocol/MockHash2.h | 67 +++++++++++++++++++ .../Library/GoogleTest/Protocol/MockHash2.cpp | 27 ++++++++ 2 files changed, 94 insertions(+) create mode 100644 MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockHash2.h create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/Protocol/MockHash2.cpp diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockHash2.h b/MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockHash2.h new file mode 100644 index 0000000000..b44d341332 --- /dev/null +++ b/MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockHash2.h @@ -0,0 +1,67 @@ +/** @file + This file declares a mock of Hash2 Protocol. + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#ifndef MOCK_HASH2_H_ +#define MOCK_HASH2_H_ + +#include +#include + +extern "C" { + #include + #include +} + +struct MockHash2 { + MOCK_INTERFACE_DECLARATION (MockHash2); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + GetHashSize, + (IN CONST EFI_HASH2_PROTOCOL *This, + IN CONST EFI_GUID *HashAlgorithm, + OUT UINTN *HashSize) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + Hash, + (IN CONST EFI_HASH2_PROTOCOL *This, + IN CONST EFI_GUID *HashAlgorithm, + IN CONST UINT8 *Message, + IN UINTN MessageSize, + IN OUT EFI_HASH2_OUTPUT *Hash) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + HashInit, + (IN CONST EFI_HASH2_PROTOCOL *This, + IN CONST EFI_GUID *HashAlgorithm) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + HashUpdate, + (IN CONST EFI_HASH2_PROTOCOL *This, + IN CONST UINT8 *Message, + IN UINTN MessageSize) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + HashFinal, + (IN CONST EFI_HASH2_PROTOCOL *This, + IN OUT EFI_HASH2_OUTPUT *Hash) + ); +}; + +extern "C" { + extern EFI_HASH2_PROTOCOL *gHash2Protocol; +} + +#endif // MOCK_HASH2_H_ diff --git a/MdePkg/Test/Mock/Library/GoogleTest/Protocol/MockHash2.cpp b/MdePkg/Test/Mock/Library/GoogleTest/Protocol/MockHash2.cpp new file mode 100644 index 0000000000..5cf94c43b4 --- /dev/null +++ b/MdePkg/Test/Mock/Library/GoogleTest/Protocol/MockHash2.cpp @@ -0,0 +1,27 @@ +/** @file MockHash2.cpp + Google Test mock for Hash2 Protocol + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include + +MOCK_INTERFACE_DEFINITION (MockHash2); +MOCK_FUNCTION_DEFINITION (MockHash2, GetHashSize, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockHash2, Hash, 5, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockHash2, HashInit, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockHash2, HashUpdate, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockHash2, HashFinal, 2, EFIAPI); + +EFI_HASH2_PROTOCOL HASH2_PROTOCOL_INSTANCE = { + GetHashSize, // EFI_HASH2_GET_HASH_SIZE + Hash, // EFI_HASH2_HASH + HashInit, // EFI_HASH2_HASH_INIT + HashUpdate, // EFI_HASH2_HASH_UPDATE + HashFinal // EFI_HASH2_HASH_FINAL +}; + +extern "C" { + EFI_HASH2_PROTOCOL *gHash2Protocol = &HASH2_PROTOCOL_INSTANCE; +}