/** @file Unit tests for the PRM Module Discovery Library. Copyright (c) Microsoft Corporation SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../PrmModuleDiscovery.h" #define UNIT_TEST_NAME "PRM Module Discovery Library Unit Test" #define UNIT_TEST_VERSION "0.1" /// === TEST CASES ================================================================================= /// ===== CREATE NEW PRM MODULE IMAGE CONTEXT LIST ENTRY TESTS SUITE ================================================== /** Verifies that the buffer returned can be deallocated. @param[in] Context [Optional] An optional context parameter. Not used in this unit test. @retval UNIT_TEST_PASSED Unit test case prerequisites are met. @retval UNIT_TEST_ERROR_PREREQUISITE_NOT_MET Test case should be skipped.. **/ UNIT_TEST_STATUS EFIAPI PrmModuleImageContextListEntryShouldDeallocate ( IN UNIT_TEST_CONTEXT Context ) { PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry; ListEntry = CreateNewPrmModuleImageContextListEntry (); UT_ASSERT_NOT_NULL (ListEntry); if (ListEntry != NULL) { FreePool (ListEntry); } return UNIT_TEST_PASSED; } /** Verifies that the list entry signature is set to the appropriate value. @param[in] Context [Optional] An optional context parameter. Not used in this unit test. @retval UNIT_TEST_PASSED Unit test case prerequisites are met. @retval UNIT_TEST_ERROR_PREREQUISITE_NOT_MET Test case should be skipped.. **/ UNIT_TEST_STATUS EFIAPI PrmModuleImageContextListEntrySignatureShouldBeValid ( IN UNIT_TEST_CONTEXT Context ) { PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry; ListEntry = CreateNewPrmModuleImageContextListEntry (); UT_ASSERT_TRUE (ListEntry->Signature == PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY_SIGNATURE); if (ListEntry != NULL) { FreePool (ListEntry); } return UNIT_TEST_PASSED; } /** Verifies that the Context buffer in the list entry is initialized to zero. @param[in] Context [Optional] An optional context parameter. Not used in this unit test. @retval UNIT_TEST_PASSED Unit test case prerequisites are met. @retval UNIT_TEST_ERROR_PREREQUISITE_NOT_MET Test case should be skipped.. **/ UNIT_TEST_STATUS EFIAPI PrmModuleImageContextListEntryImageContextShouldBeZeroed ( IN UNIT_TEST_CONTEXT Context ) { PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry; PRM_MODULE_IMAGE_CONTEXT ImageContext; ListEntry = CreateNewPrmModuleImageContextListEntry (); ZeroMem (&ImageContext, sizeof (ImageContext)); UT_ASSERT_MEM_EQUAL (&ListEntry->Context, &ImageContext, sizeof (ImageContext)); if (ListEntry != NULL) { FreePool (ListEntry); } return UNIT_TEST_PASSED; } /// === TEST ENGINE ================================================================================ /** Entry point for the PRM Context Buffer Library unit tests. @param[in] ImageHandle The firmware allocated handle for the EFI image. @param[in] SystemTable A pointer to the EFI System Table. @retval EFI_SUCCESS The entry point executed successfully. @retval other Some error occurred when executing this entry point. **/ int main ( ) { EFI_STATUS Status; UNIT_TEST_FRAMEWORK_HANDLE Framework; UNIT_TEST_SUITE_HANDLE CreateNewPrmModuleImageContextListEntryTests; Framework = NULL; DEBUG ((DEBUG_INFO, "%a v%a\n", UNIT_TEST_NAME, UNIT_TEST_VERSION)); // // Start setting up the test framework for running the tests. // Status = InitUnitTestFramework (&Framework, UNIT_TEST_NAME, gEfiCallerBaseName, UNIT_TEST_VERSION); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status = %r\n", Status)); goto EXIT; } Status = CreateUnitTestSuite ( &CreateNewPrmModuleImageContextListEntryTests, Framework, "Create New PRM Module Image Context List Entry Tests", "PrmModuleDiscoveryLib.CreateNewPrmModuleImageContextListEntry", NULL, NULL ); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for PrmModuleDiscoveryLib.CreateNewPrmModuleImageContextListEntry\n")); Status = EFI_OUT_OF_RESOURCES; goto EXIT; } AddTestCase ( CreateNewPrmModuleImageContextListEntryTests, "", "PrmModuleDiscoveryLib.CreateNewPrmModuleImageContextListEntry.ListEntryShouldDeallocate", PrmModuleImageContextListEntryShouldDeallocate, NULL, NULL, NULL ); AddTestCase ( CreateNewPrmModuleImageContextListEntryTests, "", "PrmModuleDiscoveryLib.CreateNewPrmModuleImageContextListEntry.ListEntrySignatureShouldBeValid", PrmModuleImageContextListEntrySignatureShouldBeValid, NULL, NULL, NULL ); AddTestCase ( CreateNewPrmModuleImageContextListEntryTests, "", "PrmModuleDiscoveryLib.CreateNewPrmModuleImageContextListEntry.ListEntryImageContextShouldBeZeroed", PrmModuleImageContextListEntryImageContextShouldBeZeroed, NULL, NULL, NULL ); // // Execute the tests. // Status = RunAllTestSuites (Framework); EXIT: if (Framework) { FreeUnitTestFramework (Framework); } return Status; }