Hi, Wu Hao Thank you for your reviewing. I have create the v2 patch according to your comments.
Thanks Wenyi On 2021/7/29 13:42, Wu, Hao A wrote: > Thanks for the patch. > Some inline comments below: > > >> -----Original Message----- >> From: Wenyi Xie <xiewen...@huawei.com> >> Sent: Wednesday, July 28, 2021 1:58 PM >> To: devel@edk2.groups.io; Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A >> <hao.a...@intel.com> >> Cc: songdongku...@huawei.com; xiewen...@huawei.com >> Subject: [PATCH EDK2 v1 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit >> test >> >> Adding unit test for UefiSortLib. > > > Could you help to give a brief summary on what tests are added? > > >> >> Cc: Jian J Wang <jian.j.w...@intel.com> >> Cc: Hao A Wu <hao.a...@intel.com> >> Signed-off-by: Wenyi Xie <xiewen...@huawei.com> >> --- >> MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6 + >> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf | 32 ++++ >> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c | 188 >> ++++++++++++++++++++ >> 3 files changed, 226 insertions(+) >> >> diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc >> b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc >> index 4da4692c8451..c9ec835df65d 100644 >> --- a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc >> +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc >> @@ -41,3 +41,9 @@ [Components] >> <PcdsFixedAtBuild> >> >> gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDisable >> |TRUE >> } >> + >> + MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf { >> + <LibraryClasses> >> + UefiSortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf >> + >> + DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf >> + } >> diff --git >> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf >> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf >> new file mode 100644 >> index 000000000000..d9dac307934e >> --- /dev/null >> +++ b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf >> @@ -0,0 +1,32 @@ >> +## @file >> +# This is a unit test for the UefiSortLib. >> +# >> +# Copyright (c) Microsoft Corporation. > > > Please help to use the 'copyright' information of Huawei like in file > UefiSortLibUnitTest.c. > > >> +# SPDX-License-Identifier: BSD-2-Clause-Patent ## >> + >> +[Defines] >> + INF_VERSION = 0x00010017 >> + BASE_NAME = UefiSortLibUnitTest >> + FILE_GUID = 271337A3-0D79-BA3E-BC03-714E518E3B1B >> + VERSION_STRING = 1.0 >> + MODULE_TYPE = HOST_APPLICATION >> + >> +# >> +# The following information is for reference only and not required by the >> build >> tools. >> +# >> +# VALID_ARCHITECTURES = IA32 X64 >> +# >> + >> +[Sources] >> + UefiSortLibUnitTest.c >> + >> +[Packages] >> + MdePkg/MdePkg.dec >> + MdeModulePkg/MdeModulePkg.dec >> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec >> + >> +[LibraryClasses] >> + UnitTestLib >> + DebugLib >> + UefiSortLib >> diff --git a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c >> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c >> new file mode 100644 >> index 000000000000..f2f89daef7ba >> --- /dev/null >> +++ b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c >> @@ -0,0 +1,188 @@ >> +/** @file >> + Unit tests of the UefiSortLib >> + >> + Copyright (C) Huawei Technologies Co., Ltd. All rights reserved >> + SPDX-License-Identifier: BSD-2-Clause-Patent >> + >> +**/ >> + >> +#include <stdio.h> >> +#include <string.h> >> +#include <stdarg.h> >> +#include <stddef.h> >> +#include <setjmp.h> >> +#include <cmocka.h> >> + >> +#include <Uefi.h> >> +#include <Library/BaseLib.h> >> +#include <Library/DebugLib.h> >> +#include <Library/MemoryAllocationLib.h> >> + >> +#include <Library/UnitTestLib.h> >> +#include <Library/SortLib.h> >> + >> +#define UNIT_TEST_APP_NAME "UefiSortLib Unit Tests" >> +#define UNIT_TEST_APP_VERSION "1.0" >> + >> +#define TEST_ARRAY_SIZE_9 9 >> + >> +/** >> + The function is called by PerformQuickSort to compare int values. >> + >> + @param[in] Left The pointer to first buffer. >> + @param[in] Right The pointer to second buffer. >> + >> + @retval 0 Buffer1 equal to Buffer2. >> + @return <0 Buffer1 is less than Buffer2. >> + @return >0 Buffer1 is greater than Buffer2. >> + >> +**/ >> +INTN >> +EFIAPI >> +TestCompareFunction ( >> + IN CONST VOID *Left, >> + IN CONST VOID *Right >> + ) >> +{ >> + if (*(UINT32*)Right > *(UINT32*)Left) { >> + return 1; >> + } else if (*(UINT32*)Right < *(UINT32*)Left) { >> + return -1; >> + } >> + >> + return 0; >> +} >> + >> +/** >> + Unit test for PerformQuickSort () API of the UefiSortLib. >> + >> + @param[in] Context [Optional] An optional parameter that enables: >> + 1) test-case reuse with varied parameters and >> + 2) test-case re-entry for Target tests that need a >> + reboot. This parameter is a VOID* and it is the >> + responsibility of the test author to ensure that >> the >> + contents are well understood by all test cases >> that may >> + consume it. >> + >> + @retval UNIT_TEST_PASSED The Unit test has completed and the >> test >> + case was successful. >> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed. >> +**/ >> +UNIT_TEST_STATUS >> +EFIAPI >> +SortUINT32ArrayShouldSucceed ( >> + IN UNIT_TEST_CONTEXT Context >> + ) >> +{ >> + UINTN TestCount = TEST_ARRAY_SIZE_9; >> + UINT32 TestBuffer[TEST_ARRAY_SIZE_9] = {1, 2, 3, 4, 5, 6, 7 ,8, 9}; >> + UINT32 TestResult[TEST_ARRAY_SIZE_9] = {9, 8, 7, 6, 5, 4, 3, 2, 1}; >> + >> + PerformQuickSort (TestBuffer, TestCount, sizeof (UINT32), >> + (SORT_COMPARE)TestCompareFunction); >> + UT_ASSERT_MEM_EQUAL (TestBuffer, TestResult, sizeof (UINT32) * >> + TEST_ARRAY_SIZE_9); >> + >> + return UNIT_TEST_PASSED; >> +} >> + >> +/** >> + Unit test for StringCompare () API of the UefiSortLib. >> + >> + @param[in] Context [Optional] An optional parameter that enables: >> + 1) test-case reuse with varied parameters and >> + 2) test-case re-entry for Target tests that need a >> + reboot. This parameter is a VOID* and it is the >> + responsibility of the test author to ensure that >> the >> + contents are well understood by all test cases >> that may >> + consume it. >> + >> + @retval UNIT_TEST_PASSED The Unit test has completed and the >> test >> + case was successful. >> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed. >> +**/ >> +UNIT_TEST_STATUS >> +EFIAPI >> +CompareSameBufferShouldSucceed ( >> + IN UNIT_TEST_CONTEXT Context >> + ) >> +{ >> + INTN retval; >> + CONST CHAR16* TestBuffer[] = { L"abcdefg" }; >> + >> + retval = StringCompare (TestBuffer, TestBuffer); UT_ASSERT_TRUE >> + (retval == 0); >> + >> + return UNIT_TEST_PASSED; >> +} >> + >> +/** >> + Initialze the unit test framework, suite, and unit tests for the >> + UefiSortLib and run the UefiSortLib unit test. >> + >> + @retval EFI_SUCCESS All test cases were dispatched. >> + @retval EFI_OUT_OF_RESOURCES There are not enough resources available >> to >> + initialize the unit tests. >> +**/ >> +STATIC >> +EFI_STATUS >> +EFIAPI >> +UnitTestingEntry ( >> + VOID >> + ) >> +{ >> + EFI_STATUS Status; >> + UNIT_TEST_FRAMEWORK_HANDLE Framework; >> + UNIT_TEST_SUITE_HANDLE SortTests; >> + >> + Framework = NULL; >> + >> + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME, >> + UNIT_TEST_APP_VERSION )); >> + >> + // >> + // Start setting up the test framework for running the tests. >> + // >> + Status = InitUnitTestFramework (&Framework, UNIT_TEST_APP_NAME, >> + gEfiCallerBaseName, UNIT_TEST_APP_VERSION); if (EFI_ERROR (Status)) { >> + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status = %r\n", >> Status)); >> + goto EXIT; > > > Please help to refine the indent of the codes in the above 'if' statement to > 2 spaces. > > Best Regards, > Hao Wu > > >> + } >> + >> + // >> + // Populate the UefiSortLib Unit Test Suite. >> + // >> + Status = CreateUnitTestSuite (&SortTests, Framework, "UefiSortLib >> + Sort Tests", "UefiSortLib.SortLib", NULL, NULL); if (EFI_ERROR (Status)) { >> + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for UefiSortLib API >> Tests\n")); >> + Status = EFI_OUT_OF_RESOURCES; >> + goto EXIT; >> + } >> + >> + // >> + // >> + --------------Suite--------Description------------Name--------------Fu >> + nction----------------Pre---Post---Context----------- >> + // >> + AddTestCase (SortTests, "Sort the Array", "Sort", >> SortUINT32ArrayShouldSucceed, NULL, NULL, NULL); >> + AddTestCase (SortTests, "Compare the Buffer", "Compare", >> CompareSameBufferShouldSucceed, NULL, NULL, NULL); >> + >> + // >> + // Execute the tests. >> + // >> + Status = RunAllTestSuites (Framework); >> + >> +EXIT: >> + if (Framework) { >> + FreeUnitTestFramework (Framework); >> + } >> + >> + return Status; >> +} >> + >> +/** >> + Standard POSIX C entry point for host based unit test execution. >> +**/ >> +int >> +main ( >> + int argc, >> + char *argv[] >> + ) >> +{ >> + return UnitTestingEntry (); >> +} >> -- >> 2.20.1.windows.1 > > . > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#78352): https://edk2.groups.io/g/devel/message/78352 Mute This Topic: https://groups.io/mt/84499703/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-