/** @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(); | |
} |