66 lines
2.0 KiB
C
66 lines
2.0 KiB
C
#include "c_QuickSortIterative.h"
|
|||
|
|
#include <stdlib.h>
|
||
|
|
#include <stdio.h>
|
||
|
|
#define EXPECT_TRUE(cond, msg) \
|
||
|
|
do { \
|
||
|
|
if (!(cond)) { printf(" [X] Failed Assertion: %s\n", msg); return false; } \
|
||
|
|
} while(0)
|
||
|
|
|
||
|
|
typedef struct {
|
||
|
|
int uid;
|
||
|
|
int priority;
|
||
|
|
} ThreadTask;
|
||
|
|
|
||
|
|
int compareTasks(const void* a, const void* b) {
|
||
|
|
const ThreadTask* t1 = (const ThreadTask*)a;
|
||
|
|
const ThreadTask* t2 = (const ThreadTask*)b;
|
||
|
|
return (t1->priority - t2->priority);
|
||
|
|
}
|
||
|
|
|
||
|
|
int comparePlainInts(const void* a, const void* b) {
|
||
|
|
return (*(int*)a - *(int*)b);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Test 1: Sorting a highly unsorted, random layout sequence
|
||
|
|
bool test_iterative_qsort_random(void) {
|
||
|
|
int datasets[] = { 42, 12, 89, 23, 7, 56, 34, 91, 15, 68 };
|
||
|
|
c_size_t total = sizeof(datasets) / sizeof(datasets);
|
||
|
|
|
||
|
|
c_QuickSortIterative(datasets, total, sizeof(int), comparePlainInts);
|
||
|
|
|
||
|
|
for (c_size_t i = 0; i < total - 1; i++) {
|
||
|
|
EXPECT_TRUE(datasets[i] <= datasets[i+1], "Iterative sorting sequence tracking error occurred");
|
||
|
|
}
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Test 2: Multi-field structure priority scheduling validation
|
||
|
|
bool test_iterative_qsort_struct(void) {
|
||
|
|
ThreadTask tasks[] = {
|
||
|
|
{ 1001, 5 },
|
||
|
|
{ 1002, 1 },
|
||
|
|
{ 1003, 9 },
|
||
|
|
{ 1004, 3 },
|
||
|
|
{ 1005, 5 }
|
||
|
|
};
|
||
|
|
c_size_t count = sizeof(tasks) / sizeof(tasks);
|
||
|
|
|
||
|
|
c_QuickSortIterative(tasks, count, sizeof(ThreadTask), compareTasks);
|
||
|
|
|
||
|
|
for (c_size_t i = 0; i < count - 1; i++) {
|
||
|
|
EXPECT_TRUE(tasks[i].priority <= tasks[i+1].priority,
|
||
|
|
"Struct elements misaligned during iterative stack operations");
|
||
|
|
}
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Testing Execution Entry Driver
|
||
|
|
int main(void) {
|
||
|
|
printf("=== Starting Framework Unit Testing: Iterative Quicksort ===\n");
|
||
|
|
|
||
|
|
if (test_iterative_qsort_random()) printf(" [PASS] Test 1: Random Disordered Data Array Sorted Successfully\n");
|
||
|
|
if (test_iterative_qsort_struct()) printf(" [PASS] Test 2: Complex Struct Priority Segments Sorted Successfully\n");
|
||
|
|
|
||
|
|
printf("=== System Verification Sequence Completed ===\n");
|
||
|
|
return 0;
|
||
|
|
}
|