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

Go to the source code of this file.

Functions

void amxc_lqueue_new_delete_null_check (UNUSED void **state)
 
void amxc_lqueue_new_delete_check (UNUSED void **state)
 
void amxc_lqueue_init_clean_null_check (UNUSED void **state)
 
void amxc_lqueue_init_clean_check (UNUSED void **state)
 
void amxc_lqueue_add_check (UNUSED void **state)
 
void amxc_lqueue_remove_check (UNUSED void **state)
 

Function Documentation

◆ amxc_lqueue_add_check()

void amxc_lqueue_add_check ( UNUSED void **  state)

Definition at line 92 of file test_amxc_lqueue.c.

92  {
93  amxc_lqueue_t lqueue;
97 
98  assert_int_equal(amxc_lqueue_init(&lqueue), 0);
99  assert_int_equal(amxc_lqueue_it_init(&it1), 0);
100  assert_int_equal(amxc_lqueue_it_init(&it2), 0);
101  assert_int_equal(amxc_lqueue_it_init(&it3), 0);
102 
103  assert_int_equal(amxc_lqueue_add(&lqueue, &it1), 0);
104  assert_ptr_equal(it1.next, NULL);
105  assert_ptr_equal(it1.prev, NULL);
106  assert_int_equal(amxc_lqueue_add(&lqueue, &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_lqueue_add(&lqueue, &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_lqueue_clean(&lqueue, 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 }
AMXC_INLINE int amxc_lqueue_it_init(amxc_lqueue_it_t *const it)
Initializes a linked queue iterator.
Definition: amxc_lqueue.h:283
AMXC_INLINE void amxc_lqueue_clean(amxc_lqueue_t *const lqueue, amxc_lqueue_it_delete_t func)
Removes all items from the linked queue.
Definition: amxc_lqueue.h:190
AMXC_INLINE int amxc_lqueue_init(amxc_lqueue_t *const lqueue)
Initializes a linked queue.
Definition: amxc_lqueue.h:173
AMXC_INLINE int amxc_lqueue_add(amxc_lqueue_t *const lqueue, amxc_lqueue_it_t *const it)
Adds an item to the linked queue.
Definition: amxc_lqueue.h:213
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
The linked list structure.
Definition: amxc_llist.h:228
static amxc_llist_it_t it3
static amxc_llist_it_t it2
static amxc_llist_it_t it1

◆ amxc_lqueue_init_clean_check()

void amxc_lqueue_init_clean_check ( UNUSED void **  state)

Definition at line 85 of file test_amxc_lqueue.c.

85  {
86  amxc_lqueue_t lqueue;
87 
88  assert_int_equal(amxc_lqueue_init(&lqueue), 0);
89  amxc_lqueue_clean(&lqueue, NULL);
90 }

◆ amxc_lqueue_init_clean_null_check()

void amxc_lqueue_init_clean_null_check ( UNUSED void **  state)

Definition at line 79 of file test_amxc_lqueue.c.

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

◆ amxc_lqueue_new_delete_check()

void amxc_lqueue_new_delete_check ( UNUSED void **  state)

Definition at line 72 of file test_amxc_lqueue.c.

72  {
73  amxc_lqueue_t* lqueue = NULL;
74  assert_int_equal(amxc_lqueue_new(&lqueue), 0);
75  amxc_lqueue_delete(&lqueue, NULL);
76  assert_ptr_equal(lqueue, NULL);
77 }
AMXC_INLINE int amxc_lqueue_new(amxc_lqueue_t **lqueue)
Allocates a linked queue.
Definition: amxc_lqueue.h:122
AMXC_INLINE void amxc_lqueue_delete(amxc_lqueue_t **lqueue, amxc_lqueue_it_delete_t func)
Frees the previously allocated linked queue.
Definition: amxc_lqueue.h:147

◆ amxc_lqueue_new_delete_null_check()

void amxc_lqueue_new_delete_null_check ( UNUSED void **  state)

Definition at line 66 of file test_amxc_lqueue.c.

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

◆ amxc_lqueue_remove_check()

void amxc_lqueue_remove_check ( UNUSED void **  state)

Definition at line 129 of file test_amxc_lqueue.c.

129  {
130  amxc_lqueue_t lqueue;
134 
135  assert_int_equal(amxc_lqueue_init(&lqueue), 0);
136  assert_int_equal(amxc_lqueue_it_init(&it1), 0);
137  assert_int_equal(amxc_lqueue_it_init(&it2), 0);
138  assert_int_equal(amxc_lqueue_it_init(&it3), 0);
139 
140  assert_int_equal(amxc_lqueue_add(&lqueue, &it1), 0);
141  assert_int_equal(amxc_lqueue_add(&lqueue, &it2), 0);
142  assert_int_equal(amxc_lqueue_add(&lqueue, &it3), 0);
143 
144  assert_ptr_equal(amxc_lqueue_remove(&lqueue), &it1);
145  assert_ptr_equal(it1.next, NULL);
146  assert_ptr_equal(it1.prev, NULL);
147  assert_ptr_equal(amxc_lqueue_remove(&lqueue), &it2);
148  assert_ptr_equal(it2.next, NULL);
149  assert_ptr_equal(it2.prev, NULL);
150  assert_ptr_equal(amxc_lqueue_remove(&lqueue), &it3);
151  assert_ptr_equal(it3.next, NULL);
152  assert_ptr_equal(it3.prev, NULL);
153  assert_ptr_equal(amxc_lqueue_remove(&lqueue), NULL);
154 
155  amxc_lqueue_clean(&lqueue, NULL);
156 }
AMXC_INLINE amxc_lqueue_it_t * amxc_lqueue_remove(amxc_lqueue_t *const lqueue)
Removes the first added item from the queue.
Definition: amxc_lqueue.h:228