libamxc  1.10.3
C Generic Data Containers
test_amxc_lstack.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
#include <stdarg.h>
#include <cmocka.h>
#include <amxc/amxc_lstack.h>
#include "test_amxc_lstack.h"
#include <amxc/amxc_macros.h>

Go to the source code of this file.

Functions

void amxc_lstack_new_delete_null_check (UNUSED void **state)
 
void amxc_lstack_new_delete_check (UNUSED void **state)
 
void amxc_lstack_init_clean_null_check (UNUSED void **state)
 
void amxc_lstack_init_clean_check (UNUSED void **state)
 
void amxc_lstack_push_check (UNUSED void **state)
 
void amxc_lstack_pop_check (UNUSED void **state)
 

Function Documentation

◆ amxc_lstack_init_clean_check()

void amxc_lstack_init_clean_check ( UNUSED void **  state)

Definition at line 85 of file test_amxc_lstack.c.

85  {
86  amxc_lstack_t lstack;
87 
88  assert_int_equal(amxc_lstack_init(&lstack), 0);
89  amxc_lstack_clean(&lstack, NULL);
90 }
AMXC_INLINE void amxc_lstack_clean(amxc_lstack_t *const lstack, amxc_lstack_it_delete_t func)
Removes all items from the linked stack.
Definition: amxc_lstack.h:190
AMXC_INLINE int amxc_lstack_init(amxc_lstack_t *const lstack)
Initializes a linked stack.
Definition: amxc_lstack.h:172
The linked list structure.
Definition: amxc_llist.h:228

◆ amxc_lstack_init_clean_null_check()

void amxc_lstack_init_clean_null_check ( UNUSED void **  state)

Definition at line 79 of file test_amxc_lstack.c.

79  {
80  // passing NULL pointers should not lead to segfault
81  assert_int_equal(amxc_lstack_init(NULL), -1);
82  amxc_lstack_clean(NULL, NULL);
83 }

◆ amxc_lstack_new_delete_check()

void amxc_lstack_new_delete_check ( UNUSED void **  state)

Definition at line 72 of file test_amxc_lstack.c.

72  {
73  amxc_lstack_t* lstack = NULL;
74  assert_int_equal(amxc_lstack_new(&lstack), 0);
75  amxc_lstack_delete(&lstack, NULL);
76  assert_ptr_equal(lstack, NULL);
77 }
AMXC_INLINE int amxc_lstack_new(amxc_lstack_t **lstack)
Allocates a linked stack.
Definition: amxc_lstack.h:122
AMXC_INLINE void amxc_lstack_delete(amxc_lstack_t **lstack, amxc_lstack_it_delete_t func)
Frees the previously allocated linked stack.
Definition: amxc_lstack.h:146

◆ amxc_lstack_new_delete_null_check()

void amxc_lstack_new_delete_null_check ( UNUSED void **  state)

Definition at line 66 of file test_amxc_lstack.c.

66  {
67  // passing NULL pointers should not lead to segfault
68  assert_int_equal(amxc_lstack_new(NULL), -1);
69  amxc_lstack_delete(NULL, NULL);
70 }

◆ amxc_lstack_pop_check()

void amxc_lstack_pop_check ( UNUSED void **  state)

Definition at line 128 of file test_amxc_lstack.c.

128  {
129  amxc_lstack_t lstack;
133 
134  assert_int_equal(amxc_lstack_init(&lstack), 0);
135  assert_int_equal(amxc_lstack_it_init(&it1), 0);
136  assert_int_equal(amxc_lstack_it_init(&it2), 0);
137  assert_int_equal(amxc_lstack_it_init(&it3), 0);
138 
139  assert_int_equal(amxc_lstack_push(&lstack, &it1), 0);
140  assert_int_equal(amxc_lstack_push(&lstack, &it2), 0);
141  assert_int_equal(amxc_lstack_push(&lstack, &it3), 0);
142 
143  assert_ptr_equal(amxc_lstack_pop(&lstack), &it3);
144  assert_ptr_equal(it3.next, NULL);
145  assert_ptr_equal(it3.prev, NULL);
146  assert_ptr_equal(amxc_lstack_pop(&lstack), &it2);
147  assert_ptr_equal(it2.next, NULL);
148  assert_ptr_equal(it2.prev, NULL);
149  assert_ptr_equal(amxc_lstack_pop(&lstack), &it1);
150  assert_ptr_equal(it1.next, NULL);
151  assert_ptr_equal(it1.prev, NULL);
152  assert_ptr_equal(amxc_lstack_pop(&lstack), NULL);
153 
154  amxc_lstack_clean(&lstack, NULL);
155 }
AMXC_INLINE int amxc_lstack_push(amxc_lstack_t *const lstack, amxc_lstack_it_t *const it)
Adds an item to the linked stack.
Definition: amxc_lstack.h:213
AMXC_INLINE amxc_lstack_it_t * amxc_lstack_pop(amxc_lstack_t *const lstack)
Removes the last added item from the stack.
Definition: amxc_lstack.h:228
AMXC_INLINE int amxc_lstack_it_init(amxc_lstack_it_t *const it)
Initializes a linked stack iterator.
Definition: amxc_lstack.h:299
The linked list iterator structure.
Definition: amxc_llist.h:215
struct _amxc_llist_it * next
Definition: amxc_llist.h:216
struct _amxc_llist_it * prev
Definition: amxc_llist.h:218
static amxc_llist_it_t it3
static amxc_llist_it_t it2
static amxc_llist_it_t it1

◆ amxc_lstack_push_check()

void amxc_lstack_push_check ( UNUSED void **  state)

Definition at line 92 of file test_amxc_lstack.c.

92  {
93  amxc_lstack_t lstack;
97 
98  assert_int_equal(amxc_lstack_init(&lstack), 0);
99  assert_int_equal(amxc_lstack_it_init(&it1), 0);
100  assert_int_equal(amxc_lstack_it_init(&it2), 0);
101  assert_int_equal(amxc_lstack_it_init(&it3), 0);
102 
103  assert_int_equal(amxc_lstack_push(&lstack, &it1), 0);
104  assert_ptr_equal(it1.next, NULL);
105  assert_ptr_equal(it1.prev, NULL);
106  assert_int_equal(amxc_lstack_push(&lstack, &it2), 0);
107  assert_ptr_equal(it1.next, &it2);
108  assert_ptr_equal(it1.prev, NULL);
109  assert_ptr_equal(it2.next, NULL);
110  assert_ptr_equal(it2.prev, &it1);
111  assert_int_equal(amxc_lstack_push(&lstack, &it3), 0);
112  assert_ptr_equal(it1.next, &it2);
113  assert_ptr_equal(it1.prev, NULL);
114  assert_ptr_equal(it2.next, &it3);
115  assert_ptr_equal(it2.prev, &it1);
116  assert_ptr_equal(it3.next, NULL);
117  assert_ptr_equal(it3.prev, &it2);
118 
119  amxc_lstack_clean(&lstack, NULL);
120  assert_ptr_equal(it1.next, NULL);
121  assert_ptr_equal(it1.prev, NULL);
122  assert_ptr_equal(it2.next, NULL);
123  assert_ptr_equal(it2.prev, NULL);
124  assert_ptr_equal(it3.next, NULL);
125  assert_ptr_equal(it3.prev, NULL);
126 }