用gtest测试框架实现快速排序
时间: 2023-07-11 16:29:36 浏览: 120
好的,以下是一个使用gtest测试框架实现快速排序的示例代码:
```c++
#include <gtest/gtest.h>
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
// partition
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
// recursion
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
TEST(QuickSortTest, PositiveNos) {
int arr[] = { 5, 2, 3, 1, 4 };
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
ASSERT_EQ(arr[0], 1);
ASSERT_EQ(arr[1], 2);
ASSERT_EQ(arr[2], 3);
ASSERT_EQ(arr[3], 4);
ASSERT_EQ(arr[4], 5);
}
TEST(QuickSortTest, NegativeNos) {
int arr[] = { -5, -2, -3, -1, -4 };
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
ASSERT_EQ(arr[0], -5);
ASSERT_EQ(arr[1], -4);
ASSERT_EQ(arr[2], -3);
ASSERT_EQ(arr[3], -2);
ASSERT_EQ(arr[4], -1);
}
TEST(QuickSortTest, MixedNos) {
int arr[] = { -5, 2, -3, 1, 0 };
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
ASSERT_EQ(arr[0], -5);
ASSERT_EQ(arr[1], -3);
ASSERT_EQ(arr[2], 0);
ASSERT_EQ(arr[3], 1);
ASSERT_EQ(arr[4], 2);
}
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
```
在这个示例代码中,我们使用了gtest测试框架来测试快速排序函数quickSort。我们定义了三个测试用例,分别测试了正数、负数和混合数的情况。在每个测试用例中,我们使用ASSERT_EQ宏来断言排序后数组的每个元素是否与预期值相等。如果不相等,则测试失败。
注意,这里的示例代码仅供参考,实际实现中可能需要根据具体情况进行相应修改。
阅读全文