mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-05-17 19:41:36 +08:00
329 lines
5.5 KiB
C
329 lines
5.5 KiB
C
|
|
#include "queue.h"
|
|
#include "test.h"
|
|
|
|
#if QUEUE_TEST == 1
|
|
|
|
void queue_test(void)
|
|
{
|
|
int32_t i = 0;
|
|
uint32_t size;
|
|
queue_data_t dat[10] = {0,1,2,3,4,5,6,7,8,9};
|
|
queue_data_t tmp;
|
|
pqueue_t que;
|
|
|
|
if(!queue_init(&que))
|
|
{
|
|
printf("failure -> queue_init\n");
|
|
}
|
|
printf("success -> queue_init\n");
|
|
|
|
for(i = 0; i < 10; i++)
|
|
{
|
|
if(!queue_in(que,dat[i]))
|
|
{
|
|
printf("failure -> queue_in\n");
|
|
}
|
|
if(!queue_get_front(que,&tmp))
|
|
{
|
|
printf("failure -> queue_get_front\t");
|
|
}
|
|
else
|
|
{
|
|
printf(" front = %d",tmp);
|
|
}
|
|
|
|
if(!queue_get_rear(que,&tmp))
|
|
{
|
|
printf("failure -> queue_get_rear\n");
|
|
}
|
|
else
|
|
{
|
|
printf(" rear = %d\n",tmp);
|
|
}
|
|
}
|
|
printf("success -> queue_in\n");
|
|
if(!queue_empty(que))
|
|
{
|
|
printf("success -> queue is not empty!\n");
|
|
}
|
|
else
|
|
{
|
|
printf("failure -> queue is not empty!\n");
|
|
}
|
|
|
|
size = queue_get_size(que);
|
|
if (size != 10)
|
|
{
|
|
printf("failure -> the size of queue is : %d\n", size);
|
|
}
|
|
else
|
|
{
|
|
printf("success -> the size of queue is : %d\n", size);
|
|
}
|
|
|
|
printf("success -> queue_empty\n");
|
|
for(i = 0; i < 10; i++)
|
|
{
|
|
if(!queue_get_front(que,&tmp))
|
|
{
|
|
printf("failure -> queue_get_front\t");
|
|
}
|
|
else
|
|
{
|
|
printf(" front = %d\t",tmp);
|
|
}
|
|
if(!queue_get_rear(que,&tmp))
|
|
{
|
|
printf("failure -> queue_get_rear\n");
|
|
}
|
|
else
|
|
{
|
|
printf(" rear = %d\n",tmp);
|
|
}
|
|
queue_out(que,&tmp);
|
|
}
|
|
printf("success -> queue_out\n");
|
|
if(queue_empty(que))
|
|
{
|
|
printf("success -> queue is empty!\n");
|
|
}
|
|
|
|
size = queue_get_size(que);
|
|
if (size != 0)
|
|
{
|
|
printf("failure -> the size of queue is : %d\n", size);
|
|
}
|
|
else
|
|
{
|
|
printf("success -> the size of queue is : %d\n", size);
|
|
}
|
|
|
|
for(i = 0; i < 5; i++)
|
|
{
|
|
if(!queue_in(que,dat[i]))
|
|
{
|
|
printf("failure -> queue_in\n");
|
|
}
|
|
}
|
|
|
|
if(!queue_empty(que))
|
|
{
|
|
printf("success -> queue is not empty!\n");
|
|
queue_clear(que);
|
|
printf("success -> queue_clear\n");
|
|
|
|
if(queue_empty(que))
|
|
{
|
|
printf("success -> queue is empty!\n");
|
|
}
|
|
else
|
|
{
|
|
printf("failure -> queue is not empty!\n");
|
|
}
|
|
}
|
|
|
|
queue_destroy(&que);
|
|
printf("success -> queue_destroy\n");
|
|
|
|
if(!queue_in(que,dat[0]))
|
|
{
|
|
printf("success -> If que if NULL, queue_in return failure\n");
|
|
}
|
|
|
|
queue_out(que,&tmp);
|
|
printf("success -> queue_out invalid!\n");
|
|
|
|
if(queue_empty(que))
|
|
{
|
|
printf("success -> If que is NULL, queue_empty alse return true!\n");
|
|
}
|
|
else
|
|
{
|
|
printf("failure -> Que is NULL, but queue_empty return true!\n");
|
|
}
|
|
|
|
printf("----------------------------------------\n");
|
|
}
|
|
|
|
#else
|
|
|
|
|
|
static void queue_test_num(void)
|
|
{
|
|
uint32_t i = 0;
|
|
int data[] = { 1,2,3,4,5,6,7,8,9,10 };
|
|
int temp = 0;
|
|
uint32_t len = sizeof(data) / sizeof(data[0]);
|
|
|
|
struct _queue queue;
|
|
queue_init(&queue, sizeof(int));
|
|
queue.print_obj = print_num;
|
|
|
|
printf("\n\n----- queue_test_num -----\n");
|
|
|
|
printf("----- after push-----\n");
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
queue.push(&queue, &data[i]);
|
|
|
|
queue.front(&queue, &temp);
|
|
printf("front = ");
|
|
queue.print_obj(&temp);
|
|
|
|
queue.back(&queue, &temp);
|
|
printf("\tback = ");
|
|
queue.print_obj(&temp);
|
|
|
|
printf("\tsize = %2d\n", queue.size(&queue));
|
|
}
|
|
printf("----- print -----\n");
|
|
queue.print(&queue);
|
|
printf("\n");
|
|
|
|
queue.clear(&queue);
|
|
if (queue.empty(&queue))
|
|
{
|
|
printf("----- empty -----\n");
|
|
}
|
|
|
|
printf("----- push -----\n");
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
queue.push(&queue, &data[i]);
|
|
}
|
|
|
|
printf("----- after pop -----\n");
|
|
for (i = 0; i < len + 1; i++)
|
|
{
|
|
if (true == queue.pop(&queue, &temp))
|
|
{
|
|
printf("pop = ");
|
|
queue.print_obj(&temp);
|
|
|
|
if (true == queue.front(&queue, &temp))
|
|
{
|
|
printf("front = ");
|
|
queue.print_obj(&temp);
|
|
}
|
|
|
|
if (queue.back(&queue, &temp))
|
|
{
|
|
printf("back = ");
|
|
queue.print_obj(&temp);
|
|
}
|
|
|
|
printf("size = %2d\n", queue.size(&queue));
|
|
}
|
|
else
|
|
{
|
|
printf("pop failed! because it is empty\n");
|
|
}
|
|
|
|
if (queue.empty(&queue))
|
|
{
|
|
printf("----- empty -----\n");
|
|
}
|
|
}
|
|
|
|
printf("----- print -----\n");
|
|
queue.print(&queue);
|
|
printf("\n");
|
|
|
|
queue.destory(&queue);
|
|
}
|
|
|
|
|
|
static void queue_test_char(void)
|
|
{
|
|
uint32_t i = 0;
|
|
char data[] = "abcdefghijk";
|
|
char temp = 0;
|
|
uint32_t len = sizeof(data) / sizeof(data[0]) - 1;
|
|
|
|
struct _queue queue;
|
|
queue2_init(&queue, sizeof(char), 64);
|
|
queue.print_obj = print_char;
|
|
|
|
printf("\n\n----- queue_test_char -----\n");
|
|
|
|
printf("----- after push-----\n");
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
queue.push(&queue, &data[i]);
|
|
|
|
queue.front(&queue, &temp);
|
|
printf("front = ");
|
|
queue.print_obj(&temp);
|
|
|
|
queue.back(&queue, &temp);
|
|
printf("\tback = ");
|
|
queue.print_obj(&temp);
|
|
|
|
printf("\tsize = %2d\n", queue.size(&queue));
|
|
}
|
|
printf("----- print -----\n");
|
|
queue.print(&queue);
|
|
printf("\n");
|
|
|
|
queue.clear(&queue);
|
|
if (queue.empty(&queue))
|
|
{
|
|
printf("----- empty -----\n");
|
|
}
|
|
|
|
printf("----- push -----\n");
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
queue.push(&queue, &data[i]);
|
|
}
|
|
|
|
printf("----- after pop -----\n");
|
|
for (i = 0; i < len + 1; i++)
|
|
{
|
|
if (true == queue.pop(&queue, &temp))
|
|
{
|
|
printf("pop = ");
|
|
queue.print_obj(&temp);
|
|
|
|
if (true == queue.front(&queue, &temp))
|
|
{
|
|
printf("front = ");
|
|
queue.print_obj(&temp);
|
|
}
|
|
|
|
if (queue.back(&queue, &temp))
|
|
{
|
|
printf("back = ");
|
|
queue.print_obj(&temp);
|
|
}
|
|
|
|
printf("size = %2d\n", queue.size(&queue));
|
|
}
|
|
else
|
|
{
|
|
printf("pop failed! because it is empty\n");
|
|
}
|
|
|
|
if (queue.empty(&queue))
|
|
{
|
|
printf("----- empty -----\n");
|
|
}
|
|
}
|
|
|
|
printf("----- print -----\n");
|
|
queue.print(&queue);
|
|
printf("\n");
|
|
|
|
queue.destory(&queue);
|
|
}
|
|
|
|
void queue_test(void)
|
|
{
|
|
// queue_test_num();
|
|
queue_test_char();
|
|
}
|
|
|
|
#endif
|
|
|