| /** @file | |
| Unit tests for the implementation of UefiSortLib. | |
| Copyright (c) 2022, Intel Corporation. All rights reserved. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #include <Library/GoogleTestLib.h> | |
| extern "C" { | |
| #include <Uefi.h> | |
| #include <Library/SortLib.h> | |
| } | |
| using namespace testing; | |
| INTN | |
| EFIAPI | |
| CompareUint32 ( | |
| 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; | |
| } | |
| // Test PerformQuickSort() API from UefiSortLib to verify a UINT32 array | |
| // with 9 elements in ascending order is sorted into descending order. | |
| TEST (PerformQuickSortTest, SortUint32AscendingArray_Size9) { | |
| CONST UINT32 ArraySize = 9; | |
| UINT32 BuffActual[ArraySize]; | |
| UINT32 BuffExpected[ArraySize]; | |
| for (UINT32 Index = 0; Index < ArraySize; Index++) { | |
| BuffActual[Index] = Index + 1; | |
| BuffExpected[Index] = ArraySize - Index; | |
| } | |
| PerformQuickSort (BuffActual, (UINTN)ArraySize, sizeof (UINT32), (SORT_COMPARE)CompareUint32); | |
| EXPECT_THAT (BuffActual, ElementsAreArray (BuffExpected, ArraySize)); | |
| } | |
| // Test StringCompare() API from UefiSortLib to verify the comparison | |
| // succeeds when the same buffer is compared with itself. | |
| TEST (StringCompareTest, CompareSameBuffer) { | |
| INTN RetVal; | |
| CONST CHAR16 *Buffer = (CHAR16 *)L"abcdefg"; | |
| RetVal = StringCompare (&Buffer, &Buffer); | |
| EXPECT_EQ (RetVal, 0); | |
| } | |
| int | |
| main ( | |
| int argc, | |
| char *argv[] | |
| ) | |
| { | |
| testing::InitGoogleTest (&argc, argv); | |
| return RUN_ALL_TESTS (); | |
| } |