libamxo  4.3.4
Object Definition Language (ODL) parsing
test_hooks.c File Reference
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <inttypes.h>
#include <limits.h>
#include <unistd.h>
#include <fcntl.h>
#include <cmocka.h>
#include <amxc/amxc.h>
#include <amxp/amxp_signal.h>
#include <amxd/amxd_dm.h>
#include <amxd/amxd_object.h>
#include <amxd/amxd_parameter.h>
#include <amxo/amxo.h>
#include <amxo/amxo_hooks.h>
#include "test_hooks.h"
#include <amxc/amxc_macros.h>

Go to the source code of this file.

Functions

static void test_hook_comment (UNUSED amxo_parser_t *parser, const char *comment)
 
static void test_hook_start (UNUSED amxo_parser_t *parser)
 
static void test_hook_end (UNUSED amxo_parser_t *parser)
 
static void test_hook_start_include (UNUSED amxo_parser_t *parser, UNUSED const char *file)
 
static void test_hook_end_include (UNUSED amxo_parser_t *parser, UNUSED const char *file)
 
static void test_hook_start_section (UNUSED amxo_parser_t *parser, UNUSED int section_id)
 
static void test_hook_end_section (UNUSED amxo_parser_t *parser, UNUSED int section_id)
 
static void test_hook_set_config (UNUSED amxo_parser_t *parser, UNUSED const char *option, UNUSED amxc_var_t *value)
 
static void test_hook_create_object (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *parent, UNUSED const char *name, UNUSED int64_t attr_bitmask, UNUSED amxd_object_type_t type)
 
static void test_hook_add_instance (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *parent, UNUSED uint32_t index, UNUSED const char *name)
 
static void test_hook_select_object (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *parent, UNUSED const char *path)
 
static void test_hook_end_object (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object)
 
static void test_hook_add_param (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED const char *name, UNUSED int64_t attr_bitmask, UNUSED uint32_t type)
 
static void test_hook_set_param (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED amxd_param_t *param, UNUSED amxc_var_t *value)
 
static void test_hook_end_param (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED amxd_param_t *param)
 
static void test_hook_add_func (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED const char *name, UNUSED int64_t attr_bitmask, UNUSED uint32_t type)
 
static void test_hook_end_func (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED amxd_function_t *function)
 
static void test_hook_add_func_arg (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED amxd_function_t *func, UNUSED const char *name, UNUSED int64_t attr_bitmask, UNUSED uint32_t type, UNUSED amxc_var_t *def_value)
 
static void test_hook_set_counter (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *parent, const char *name)
 
static void test_hook_add_mib (UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED const char *mib)
 
void test_hooks_are_called (UNUSED void **state)
 
void test_hooks_empty_hooks (UNUSED void **state)
 
void test_hooks_add_remove_hooks (UNUSED void **state)
 

Variables

static amxc_aqueue_t expected_order
 
static amxo_hooks_t test_hooks
 
static amxo_hooks_t test_empty_hooks = { }
 

Function Documentation

◆ test_hook_add_func()

static void test_hook_add_func ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  object,
UNUSED const char *  name,
UNUSED int64_t  attr_bitmask,
UNUSED uint32_t  type 
)
static

Definition at line 199 of file test_hooks.c.

203  {
204 }

◆ test_hook_add_func_arg()

static void test_hook_add_func_arg ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  object,
UNUSED amxd_function_t *  func,
UNUSED const char *  name,
UNUSED int64_t  attr_bitmask,
UNUSED uint32_t  type,
UNUSED amxc_var_t *  def_value 
)
static

Definition at line 211 of file test_hooks.c.

217  {
218 }

◆ test_hook_add_instance()

static void test_hook_add_instance ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  parent,
UNUSED uint32_t  index,
UNUSED const char *  name 
)
static

Definition at line 154 of file test_hooks.c.

157  {
158  const char* check = amxc_aqueue_remove(&expected_order);
159  assert_ptr_not_equal(check, NULL);
160  printf("%s\n", check);
161  assert_string_equal(check, "instance add");
162 }
static amxc_aqueue_t expected_order
Definition: test_hooks.c:82

◆ test_hook_add_mib()

static void test_hook_add_mib ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  object,
UNUSED const char *  mib 
)
static

Definition at line 226 of file test_hooks.c.

228  {
229  const char* check = amxc_aqueue_remove(&expected_order);
230  assert_ptr_not_equal(check, NULL);
231  printf("%s\n", check);
232  assert_string_equal(check, "add mib");
233 }

◆ test_hook_add_param()

static void test_hook_add_param ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  object,
UNUSED const char *  name,
UNUSED int64_t  attr_bitmask,
UNUSED uint32_t  type 
)
static

Definition at line 181 of file test_hooks.c.

185  {
186 }

◆ test_hook_comment()

static void test_hook_comment ( UNUSED amxo_parser_t parser,
const char *  comment 
)
static

Definition at line 84 of file test_hooks.c.

84  {
85  printf("%s\n", comment);
86 }

◆ test_hook_create_object()

static void test_hook_create_object ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  parent,
UNUSED const char *  name,
UNUSED int64_t  attr_bitmask,
UNUSED amxd_object_type_t  type 
)
static

Definition at line 143 of file test_hooks.c.

147  {
148  const char* check = amxc_aqueue_remove(&expected_order);
149  assert_ptr_not_equal(check, NULL);
150  printf("%s\n", check);
151  assert_string_equal(check, "create object");
152 }

◆ test_hook_end()

static void test_hook_end ( UNUSED amxo_parser_t parser)
static

Definition at line 95 of file test_hooks.c.

95  {
96  const char* check = amxc_aqueue_remove(&expected_order);
97  assert_ptr_not_equal(check, NULL);
98  printf("%s\n", check);
99  assert_string_equal(check, "end");
100 }

◆ test_hook_end_func()

static void test_hook_end_func ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  object,
UNUSED amxd_function_t *  function 
)
static

Definition at line 206 of file test_hooks.c.

208  {
209 }

◆ test_hook_end_include()

static void test_hook_end_include ( UNUSED amxo_parser_t parser,
UNUSED const char *  file 
)
static

Definition at line 110 of file test_hooks.c.

111  {
112  const char* check = amxc_aqueue_remove(&expected_order);
113  assert_ptr_not_equal(check, NULL);
114  printf("%s\n", check);
115  assert_string_equal(check, "include end");
116 }

◆ test_hook_end_object()

static void test_hook_end_object ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  object 
)
static

Definition at line 173 of file test_hooks.c.

174  {
175  const char* check = amxc_aqueue_remove(&expected_order);
176  assert_ptr_not_equal(check, NULL);
177  printf("%s\n", check);
178  assert_string_equal(check, "end object");
179 }

◆ test_hook_end_param()

static void test_hook_end_param ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  object,
UNUSED amxd_param_t *  param 
)
static

Definition at line 194 of file test_hooks.c.

196  {
197 }

◆ test_hook_end_section()

static void test_hook_end_section ( UNUSED amxo_parser_t parser,
UNUSED int  section_id 
)
static

Definition at line 126 of file test_hooks.c.

127  {
128  const char* check = amxc_aqueue_remove(&expected_order);
129  assert_ptr_not_equal(check, NULL);
130  printf("%s\n", check);
131  assert_string_equal(check, "section end");
132 }

◆ test_hook_select_object()

static void test_hook_select_object ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  parent,
UNUSED const char *  path 
)
static

Definition at line 164 of file test_hooks.c.

166  {
167  const char* check = amxc_aqueue_remove(&expected_order);
168  assert_ptr_not_equal(check, NULL);
169  printf("%s\n", check);
170  assert_string_equal(check, "select object");
171 }

◆ test_hook_set_config()

static void test_hook_set_config ( UNUSED amxo_parser_t parser,
UNUSED const char *  option,
UNUSED amxc_var_t *  value 
)
static

Definition at line 134 of file test_hooks.c.

136  {
137  const char* check = amxc_aqueue_remove(&expected_order);
138  assert_ptr_not_equal(check, NULL);
139  printf("%s\n", check);
140  assert_string_equal(check, "set config");
141 }

◆ test_hook_set_counter()

static void test_hook_set_counter ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  parent,
const char *  name 
)
static

Definition at line 220 of file test_hooks.c.

222  {
223  assert_string_equal(name, "NumberOfChildren");
224 }

◆ test_hook_set_param()

static void test_hook_set_param ( UNUSED amxo_parser_t parser,
UNUSED amxd_object_t *  object,
UNUSED amxd_param_t *  param,
UNUSED amxc_var_t *  value 
)
static

Definition at line 188 of file test_hooks.c.

191  {
192 }

◆ test_hook_start()

static void test_hook_start ( UNUSED amxo_parser_t parser)
static

Definition at line 88 of file test_hooks.c.

88  {
89  const char* check = amxc_aqueue_remove(&expected_order);
90  assert_ptr_not_equal(check, NULL);
91  printf("%s\n", check);
92  assert_string_equal(check, "start");
93 }

◆ test_hook_start_include()

static void test_hook_start_include ( UNUSED amxo_parser_t parser,
UNUSED const char *  file 
)
static

Definition at line 102 of file test_hooks.c.

103  {
104  const char* check = amxc_aqueue_remove(&expected_order);
105  assert_ptr_not_equal(check, NULL);
106  printf("%s\n", check);
107  assert_string_equal(check, "include start");
108 }

◆ test_hook_start_section()

static void test_hook_start_section ( UNUSED amxo_parser_t parser,
UNUSED int  section_id 
)
static

Definition at line 118 of file test_hooks.c.

119  {
120  const char* check = amxc_aqueue_remove(&expected_order);
121  assert_ptr_not_equal(check, NULL);
122  printf("%s\n", check);
123  assert_string_equal(check, "section start");
124 }

◆ test_hooks_add_remove_hooks()

void test_hooks_add_remove_hooks ( UNUSED void **  state)

Definition at line 362 of file test_hooks.c.

362  {
363  amxd_dm_t dm;
364  amxo_parser_t parser;
365  amxo_parser_t parser2;
366 
367  amxd_dm_init(&dm);
368  amxo_parser_init(&parser);
369  amxo_parser_init(&parser2);
370 
371  assert_int_equal(amxo_parser_set_hooks(&parser, &test_hooks), 0);
372  assert_int_equal(amxo_parser_set_hooks(&parser, &test_empty_hooks), 0);
373  assert_int_equal(amxo_parser_unset_hooks(&parser, &test_hooks), 0);
374  assert_int_equal(amxo_parser_unset_hooks(&parser, &test_empty_hooks), 0);
375 
376  assert_int_equal(amxo_parser_parse_file(&parser, "test_valid.odl", amxd_dm_get_root(&dm)), 0);
377  assert_int_equal(amxo_parser_get_status(&parser), amxd_status_ok);
378 
379  assert_int_not_equal(amxo_parser_set_hooks(NULL, &test_hooks), 0);
380  assert_int_not_equal(amxo_parser_set_hooks(&parser, NULL), 0);
381  assert_int_not_equal(amxo_parser_unset_hooks(NULL, &test_hooks), 0);
382  assert_int_not_equal(amxo_parser_unset_hooks(&parser, NULL), 0);
383 
384  assert_int_equal(amxo_parser_set_hooks(&parser, &test_hooks), 0);
385  assert_int_not_equal(amxo_parser_set_hooks(&parser, &test_hooks), 0);
386  assert_int_not_equal(amxo_parser_unset_hooks(&parser2, &test_hooks), 0);
387 
388  amxo_parser_clean(&parser);
389  amxo_parser_clean(&parser2);
390  amxd_dm_clean(&dm);
391 }
int amxo_parser_set_hooks(amxo_parser_t *parser, amxo_hooks_t *hooks)
int amxo_parser_unset_hooks(amxo_parser_t *parser, amxo_hooks_t *hooks)
void amxo_parser_clean(amxo_parser_t *parser)
Cleans up the odl parser instance.
int amxo_parser_parse_file(amxo_parser_t *parser, const char *file_path, amxd_object_t *object)
Parses an odl file.
static amxd_status_t amxo_parser_get_status(amxo_parser_t *parser)
Get the status of the odl parser.
Definition: amxo.h:414
int amxo_parser_init(amxo_parser_t *parser)
Initializes a new odl parser instance.
The ODL parser structure.
Definition: amxo_types.h:245
static amxo_hooks_t test_empty_hooks
Definition: test_hooks.c:258
static amxo_hooks_t test_hooks
Definition: test_hooks.c:235

◆ test_hooks_are_called()

void test_hooks_are_called ( UNUSED void **  state)

Definition at line 260 of file test_hooks.c.

260  {
261  amxd_dm_t dm;
262  amxo_parser_t parser;
263 
264  amxc_aqueue_init(&expected_order);
265  amxd_dm_init(&dm);
266  amxo_parser_init(&parser);
267 
268  amxc_aqueue_add(&expected_order, "start");
269  amxc_aqueue_add(&expected_order, "section start");
270  amxc_aqueue_add(&expected_order, "set config");
271  amxc_aqueue_add(&expected_order, "set config");
272  amxc_aqueue_add(&expected_order, "set config");
273  amxc_aqueue_add(&expected_order, "section end");
274  amxc_aqueue_add(&expected_order, "include start");
275  amxc_aqueue_add(&expected_order, "section start");
276  amxc_aqueue_add(&expected_order, "section end");
277  amxc_aqueue_add(&expected_order, "include end");
278  amxc_aqueue_add(&expected_order, "section start");
279  amxc_aqueue_add(&expected_order, "create object"); // mib test_mib
280  amxc_aqueue_add(&expected_order, "end object");
281  amxc_aqueue_add(&expected_order, "create object"); // TestObjectRoot
282  amxc_aqueue_add(&expected_order, "create object"); // TestObjectSingelton
283  amxc_aqueue_add(&expected_order, "end object");
284  amxc_aqueue_add(&expected_order, "create object"); // TestObjSingletonAttr
285  amxc_aqueue_add(&expected_order, "end object");
286  amxc_aqueue_add(&expected_order, "create object"); // TestObjectTemplate
287  amxc_aqueue_add(&expected_order, "end object");
288  amxc_aqueue_add(&expected_order, "create object"); // TestObjTemplateAttr
289  amxc_aqueue_add(&expected_order, "end object");
290  amxc_aqueue_add(&expected_order, "create object"); // TestObjectParamTypes
291  amxc_aqueue_add(&expected_order, "end object");
292  amxc_aqueue_add(&expected_order, "create object"); // TestObjectFunctions
293  amxc_aqueue_add(&expected_order, "end object");
294  amxc_aqueue_add(&expected_order, "create object"); // TestSingeltonParamAttr
295  amxc_aqueue_add(&expected_order, "end object");
296  amxc_aqueue_add(&expected_order, "create object"); // TestTemplateParamAttr
297  amxc_aqueue_add(&expected_order, "end object");
298  amxc_aqueue_add(&expected_order, "create object"); // TestSingletonFuncAttr
299  amxc_aqueue_add(&expected_order, "end object");
300  amxc_aqueue_add(&expected_order, "create object"); // TestTemplateFuncAttr
301  amxc_aqueue_add(&expected_order, "end object");
302  amxc_aqueue_add(&expected_order, "create object"); // TestObjectTemplateWithChild
303  amxc_aqueue_add(&expected_order, "create object"); // TemplateChildObject
304  amxc_aqueue_add(&expected_order, "end object");
305  amxc_aqueue_add(&expected_order, "end object"); // TestObjectTemplateWithChild
306  amxc_aqueue_add(&expected_order, "create object"); // TestChangeAttr
307  amxc_aqueue_add(&expected_order, "end object");
308  amxc_aqueue_add(&expected_order, "end object"); // TestObjectRoot
309  amxc_aqueue_add(&expected_order, "section end");
310  amxc_aqueue_add(&expected_order, "section start");
311  amxc_aqueue_add(&expected_order, "select object");
312  amxc_aqueue_add(&expected_order, "instance add");
313  amxc_aqueue_add(&expected_order, "select object");
314  amxc_aqueue_add(&expected_order, "end object");
315  amxc_aqueue_add(&expected_order, "end object");
316  amxc_aqueue_add(&expected_order, "end object");
317  amxc_aqueue_add(&expected_order, "select object");
318  amxc_aqueue_add(&expected_order, "instance add");
319  amxc_aqueue_add(&expected_order, "end object");
320  amxc_aqueue_add(&expected_order, "instance add");
321  amxc_aqueue_add(&expected_order, "add mib");
322  amxc_aqueue_add(&expected_order, "end object");
323  amxc_aqueue_add(&expected_order, "end object");
324  amxc_aqueue_add(&expected_order, "select object");
325  amxc_aqueue_add(&expected_order, "end object");
326  amxc_aqueue_add(&expected_order, "section end");
327  amxc_aqueue_add(&expected_order, "end");
328 
330  assert_int_equal(amxo_parser_parse_file(&parser, "test_valid.odl", amxd_dm_get_root(&dm)), 0);
331  assert_int_equal(amxo_parser_get_status(&parser), amxd_status_ok);
332  assert_int_equal(amxc_aqueue_size(&expected_order), 0);
333 
334  amxd_dm_clean(&dm);
335 
337  amxc_aqueue_add(&expected_order, "start");
338  assert_int_equal(amxo_parser_parse_file(&parser, "test_valid.odl", amxd_dm_get_root(&dm)), 0);
339  assert_int_equal(amxo_parser_get_status(&parser), amxd_status_ok);
340  assert_int_equal(amxc_aqueue_size(&expected_order), 1);
341 
342  amxc_aqueue_clean(&expected_order, NULL);
343  amxo_parser_clean(&parser);
344  amxd_dm_clean(&dm);
345 }

◆ test_hooks_empty_hooks()

void test_hooks_empty_hooks ( UNUSED void **  state)

Definition at line 347 of file test_hooks.c.

347  {
348  amxd_dm_t dm;
349  amxo_parser_t parser;
350 
351  amxd_dm_init(&dm);
352  amxo_parser_init(&parser);
353 
355  assert_int_equal(amxo_parser_parse_file(&parser, "test_valid.odl", amxd_dm_get_root(&dm)), 0);
356  assert_int_equal(amxo_parser_get_status(&parser), amxd_status_ok);
357 
358  amxo_parser_clean(&parser);
359  amxd_dm_clean(&dm);
360 }

Variable Documentation

◆ expected_order

amxc_aqueue_t expected_order
static

Definition at line 82 of file test_hooks.c.

◆ test_empty_hooks

amxo_hooks_t test_empty_hooks = { }
static

Definition at line 258 of file test_hooks.c.

◆ test_hooks

amxo_hooks_t test_hooks
static
Initial value:
= {
.start = test_hook_start,
.end = test_hook_end,
.comment = test_hook_comment,
.start_include = test_hook_start_include,
.end_include = test_hook_end_include,
.set_config = test_hook_set_config,
.start_section = test_hook_start_section,
.end_section = test_hook_end_section,
.create_object = test_hook_create_object,
.add_instance = test_hook_add_instance,
.select_object = test_hook_select_object,
.end_object = test_hook_end_object,
.add_param = test_hook_add_param,
.set_param = test_hook_set_param,
.end_param = test_hook_end_param,
.add_func = test_hook_add_func,
.end_func = test_hook_end_func,
.add_func_arg = test_hook_add_func_arg,
.set_counter = test_hook_set_counter,
.add_mib = test_hook_add_mib
}
static void test_hook_create_object(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *parent, UNUSED const char *name, UNUSED int64_t attr_bitmask, UNUSED amxd_object_type_t type)
Definition: test_hooks.c:143
static void test_hook_add_func_arg(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED amxd_function_t *func, UNUSED const char *name, UNUSED int64_t attr_bitmask, UNUSED uint32_t type, UNUSED amxc_var_t *def_value)
Definition: test_hooks.c:211
static void test_hook_set_config(UNUSED amxo_parser_t *parser, UNUSED const char *option, UNUSED amxc_var_t *value)
Definition: test_hooks.c:134
static void test_hook_start(UNUSED amxo_parser_t *parser)
Definition: test_hooks.c:88
static void test_hook_end(UNUSED amxo_parser_t *parser)
Definition: test_hooks.c:95
static void test_hook_end_object(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object)
Definition: test_hooks.c:173
static void test_hook_add_instance(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *parent, UNUSED uint32_t index, UNUSED const char *name)
Definition: test_hooks.c:154
static void test_hook_comment(UNUSED amxo_parser_t *parser, const char *comment)
Definition: test_hooks.c:84
static void test_hook_add_mib(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED const char *mib)
Definition: test_hooks.c:226
static void test_hook_add_func(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED const char *name, UNUSED int64_t attr_bitmask, UNUSED uint32_t type)
Definition: test_hooks.c:199
static void test_hook_start_include(UNUSED amxo_parser_t *parser, UNUSED const char *file)
Definition: test_hooks.c:102
static void test_hook_select_object(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *parent, UNUSED const char *path)
Definition: test_hooks.c:164
static void test_hook_set_counter(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *parent, const char *name)
Definition: test_hooks.c:220
static void test_hook_end_param(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED amxd_param_t *param)
Definition: test_hooks.c:194
static void test_hook_add_param(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED const char *name, UNUSED int64_t attr_bitmask, UNUSED uint32_t type)
Definition: test_hooks.c:181
static void test_hook_end_section(UNUSED amxo_parser_t *parser, UNUSED int section_id)
Definition: test_hooks.c:126
static void test_hook_end_func(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED amxd_function_t *function)
Definition: test_hooks.c:206
static void test_hook_start_section(UNUSED amxo_parser_t *parser, UNUSED int section_id)
Definition: test_hooks.c:118
static void test_hook_set_param(UNUSED amxo_parser_t *parser, UNUSED amxd_object_t *object, UNUSED amxd_param_t *param, UNUSED amxc_var_t *value)
Definition: test_hooks.c:188
static void test_hook_end_include(UNUSED amxo_parser_t *parser, UNUSED const char *file)
Definition: test_hooks.c:110

Definition at line 235 of file test_hooks.c.