From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mx.groups.io with SMTP id smtpd.web12.6772.1627546080283184512 for ; Thu, 29 Jul 2021 01:08:00 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: huawei.com, ip: 45.249.212.188, mailfrom: xiewenyi2@huawei.com) Received: from dggemv703-chm.china.huawei.com (unknown [172.30.72.56]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Gb3311rC9zcfsx for ; Thu, 29 Jul 2021 16:04:29 +0800 (CST) Received: from dggpemm000003.china.huawei.com (7.185.36.128) by dggemv703-chm.china.huawei.com (10.3.19.46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Thu, 29 Jul 2021 16:07:58 +0800 Received: from [10.174.253.58] (10.174.253.58) by dggpemm000003.china.huawei.com (7.185.36.128) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Thu, 29 Jul 2021 16:07:57 +0800 Subject: Re: [PATCH EDK2 v1 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test To: "Wu, Hao A" , "devel@edk2.groups.io" , "Wang, Jian J" CC: "songdongkuang@huawei.com" References: <1627451892-40994-1-git-send-email-xiewenyi2@huawei.com> <1627451892-40994-2-git-send-email-xiewenyi2@huawei.com> From: "wenyi,xie" Message-ID: <5c6b851b-66ef-f1eb-cdd3-d5c43dfe6a59@huawei.com> Date: Thu, 29 Jul 2021 16:07:57 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.0.1 MIME-Version: 1.0 In-Reply-To: X-Originating-IP: [10.174.253.58] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpemm000003.china.huawei.com (7.185.36.128) X-CFilter-Loop: Reflected Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit 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 >> Sent: Wednesday, July 28, 2021 1:58 PM >> To: devel@edk2.groups.io; Wang, Jian J ; Wu, Hao A >> >> Cc: songdongkuang@huawei.com; xiewenyi2@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 >> Cc: Hao A Wu >> Signed-off-by: Wenyi Xie >> --- >> 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] >> >> >> gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDisable >> |TRUE >> } >> + >> + MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf { >> + >> + 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 >> +#include >> +#include >> +#include >> +#include >> +#include >> + >> +#include >> +#include >> +#include >> +#include >> + >> +#include >> +#include >> + >> +#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 > > . >