unicstl/test/test_stack.c

57 lines
1.1 KiB
C

/**
* @file test_stack.c
* @author wenjf (Orig5826@163.com)
* @brief
* @version 0.1
* @date 2024-08-27
*
* @copyright Copyright (c) 2024
*
*/
#include "test.h"
static void test_stack_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]);
stack_t stack = NULL;
stack = stack_new();
TEST_ASSERT_TRUE(stack_init(stack, sizeof(int)));
stack->print_obj = print_num;
TEST_ASSERT_FALSE(stack->peek(stack, &temp));
for (i = 0; i < len; i++)
{
stack->push(stack, &data[i]);
stack->peek(stack, &temp);
}
for (i = 0; i < len + 1; i++)
{
if (true == stack->pop(stack, &temp))
{
if(false != stack->peek(stack, &temp))
{
TEST_ASSERT_EQUAL(data[len - 2 - i], temp);
}
}
}
TEST_ASSERT_TRUE(stack->empty(stack));
stack_free(&stack);
TEST_ASSERT_NULL(stack);
}
void test_stack(void)
{
// UNITY_BEGIN();
RUN_TEST(test_stack_num);
// UNITY_END();
}