mirror of https://github.com/acidanthera/audk.git
62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
/** @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();
|
|
}
|