From nobody Wed May 8 07:40:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+78265+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+78265+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1627452180; cv=none; d=zohomail.com; s=zohoarc; b=koS+9Vp+f+mzY9RMwsCZpHeiw+bLV37Bp6GnIih6p9GJQB/hcnkDxeiMBgEpDxXg/8BKy57FOaAdgFF15yHCgJnEtFETAt/Rr9a++X1FUojiGuAY73uzTchM/p9C2mmPmFMGIJj6H225X1/vYI1AmEjwZGXyQMEumcdW80xGrQw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1627452180; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=7sdWAUft+VTBv2UVW5At6TteP04N/AWWW7OfTOHkGfA=; b=BkTFtT05ymLbjLtZiUFRCGnk6pXB4GC+E0jROLZn0GzRIUlkJ8cn+P4U8iOHxZIA7d4dyOZNAudx70iYqrJFJCvACKciYkfrviLA1F/68dUV2gqcgIfvhQ6/1lrvGv0DJeSmL13ZWzqVE0LbbHf7w0Bt3Oarj94vsuFjcWjm1DY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+78265+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1627452180370524.0934209473945; Tue, 27 Jul 2021 23:03:00 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id n4WgYY1788612xqz4gcXG6Y9; Tue, 27 Jul 2021 23:02:59 -0700 X-Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mx.groups.io with SMTP id smtpd.web09.1364.1627452178089033164 for ; Tue, 27 Jul 2021 23:02:58 -0700 X-Received: from dggemv704-chm.china.huawei.com (unknown [172.30.72.55]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4GZNGN26Vpz1CP1r for ; Wed, 28 Jul 2021 13:57:00 +0800 (CST) X-Received: from dggpemm000003.china.huawei.com (7.185.36.128) by dggemv704-chm.china.huawei.com (10.3.19.47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 28 Jul 2021 14:02:55 +0800 X-Received: from HGH1000039998.huawei.com (10.184.68.188) 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; Wed, 28 Jul 2021 14:02:55 +0800 From: "wenyi,xie via groups.io" To: , , CC: , Subject: [edk2-devel] [PATCH EDK2 v1 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test Date: Wed, 28 Jul 2021 13:58:12 +0800 Message-ID: <1627451892-40994-2-git-send-email-xiewenyi2@huawei.com> In-Reply-To: <1627451892-40994-1-git-send-email-xiewenyi2@huawei.com> References: <1627451892-40994-1-git-send-email-xiewenyi2@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.184.68.188] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggpemm000003.china.huawei.com (7.185.36.128) X-CFilter-Loop: Reflected Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,xiewenyi2@huawei.com X-Gm-Message-State: lpKDrw1rcTixPtk0lxfNknXtx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1627452179; bh=jniS9D9Lk8VrSK2rnVOElUcihxmqIgIby5W4pdjdXZQ=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=DVyUODHg1tog7xjuQK/IWo5hP7kOsHpDhjav78JTB6zIQrDBjm5kUbW21Ivi9HFBsCZ 7ea1LQFZ6XpBxh+nKrJUxYsevLyRCMqKSDrXixvIhFYl7/sjUyD4CCjw3XtXaNN/28DWf LxLpyWI5e4MxkrzBliVrQbFj0go5o6vggvs= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1627452180979100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Adding unit test for UefiSortLib. 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.PcdAllowVariablePolicyEnforcementDisa= ble|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. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +[Defines] + INF_VERSION =3D 0x00010017 + BASE_NAME =3D UefiSortLibUnitTest + FILE_GUID =3D 271337A3-0D79-BA3E-BC03-714E518E3B1B + VERSION_STRING =3D 1.0 + MODULE_TYPE =3D HOST_APPLICATION + +# +# The following information is for reference only and not required by the = build tools. +# +# VALID_ARCHITECTURES =3D 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 th= at may + consume it. + + @retval UNIT_TEST_PASSED The Unit test has completed and th= e 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 =3D TEST_ARRAY_SIZE_9; + UINT32 TestBuffer[TEST_ARRAY_SIZE_9] =3D {1, 2, 3, 4, 5, 6, 7 ,8, 9}; + UINT32 TestResult[TEST_ARRAY_SIZE_9] =3D {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_ARRA= Y_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 th= at may + consume it. + + @retval UNIT_TEST_PASSED The Unit test has completed and th= e 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[] =3D { L"abcdefg" }; + + retval =3D StringCompare (TestBuffer, TestBuffer); + UT_ASSERT_TRUE (retval =3D=3D 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 =3D NULL; + + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME, UNIT_TEST_APP_VERSIO= N )); + + // + // Start setting up the test framework for running the tests. + // + Status =3D InitUnitTestFramework (&Framework, UNIT_TEST_APP_NAME, gEfiCa= llerBaseName, UNIT_TEST_APP_VERSION); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status =3D %r= \n", Status)); + goto EXIT; + } + + // + // Populate the UefiSortLib Unit Test Suite. + // + Status =3D CreateUnitTestSuite (&SortTests, Framework, "UefiSortLib Sort= Tests", "UefiSortLib.SortLib", NULL, NULL); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for UefiSortLib AP= I Tests\n")); + Status =3D EFI_OUT_OF_RESOURCES; + goto EXIT; + } + + // + // --------------Suite--------Description------------Name--------------F= unction----------------Pre---Post---Context----------- + // + AddTestCase (SortTests, "Sort the Array", "Sort", SortUINT3= 2ArrayShouldSucceed, NULL, NULL, NULL); + AddTestCase (SortTests, "Compare the Buffer", "Compare", CompareSa= meBufferShouldSucceed, NULL, NULL, NULL); + + // + // Execute the tests. + // + Status =3D 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 (); +} --=20 2.20.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#78265): https://edk2.groups.io/g/devel/message/78265 Mute This Topic: https://groups.io/mt/84499703/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-