stack bugfix

This commit is contained in:
maxgrf 2025-12-11 11:26:51 +01:00
parent 47a158ca14
commit 1b022d5b2e

View File

@ -24,26 +24,22 @@ int main(void)
return UNITY_END();
}
void test_push_and_top(void)
{
StackNode *stack = NULL;
int *a = malloc(sizeof(int)); *a = 10;
int *b = malloc(sizeof(int)); *b = 20;
int *c = malloc(sizeof(int)); *c = 30;
int a = 10;
int b = 20;
int c = 30;
stack = push(stack, a);
stack = push(stack, b);
stack = push(stack, c);
stack = push(stack, &a);
stack = push(stack, &b);
stack = push(stack, &c);
TEST_ASSERT_EQUAL_INT(30, *(int*)top(stack));
// Cleanup data manually
void *data;
stack = pop(stack, &data); free(data);
stack = pop(stack, &data); free(data);
stack = pop(stack, &data); free(data);
clearStack(&stack);
TEST_ASSERT_NULL(stack);
}
@ -51,22 +47,18 @@ void test_pop(void)
{
StackNode *stack = NULL;
int *x = malloc(sizeof(int)); *x = 111;
int *y = malloc(sizeof(int)); *y = 222;
int x = 111;
int y = 222;
stack = push(stack, x);
stack = push(stack, y);
stack = push(stack, &x);
stack = push(stack, &y);
void *data;
stack = pop(stack, &data);
TEST_ASSERT_EQUAL_INT(222, *(int*)data);
free(data);
stack = pop(stack, &data);
TEST_ASSERT_EQUAL_INT(111, *(int*)data);
free(data);
// pop removes y
stack = pop(stack);
TEST_ASSERT_EQUAL_INT(111, *(int*)top(stack));
// pop removes x
stack = pop(stack);
TEST_ASSERT_NULL(stack);
}
@ -74,17 +66,11 @@ void test_clearStack(void)
{
StackNode *stack = NULL;
int *p = malloc(sizeof(int)); *p = 7;
int *q = malloc(sizeof(int)); *q = 8;
int x = 5;
int y = 6;
stack = push(stack, p);
stack = push(stack, q);
// Pop to free data first!
void *data;
stack = pop(stack, &data); free(data);
stack = pop(stack, &data); free(data);
stack = push(stack, &x);
stack = push(stack, &y);
clearStack(&stack);