libamxo  4.3.4
Object Definition Language (ODL) parsing
test_ftab_resolver.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_ftab_resolver.h"
#include <amxc/amxc_macros.h>

Go to the source code of this file.

Functions

static amxd_status_t dm_method_impl (UNUSED amxd_object_t *object, UNUSED amxd_function_t *func, UNUSED amxc_var_t *args, UNUSED amxc_var_t *ret)
 
static void check_can_invoke_functions (amxd_dm_t *dm, bool func3)
 
static void check_can_not_invoke_functions (amxd_dm_t *dm)
 
void test_ftab_resolver_resolves (UNUSED void **state)
 
void test_ftab_resolver_invalid_args (UNUSED void **state)
 

Function Documentation

◆ check_can_invoke_functions()

static void check_can_invoke_functions ( amxd_dm_t *  dm,
bool  func3 
)
static

Definition at line 89 of file test_ftab_resolver.c.

89  {
90  amxc_var_t args;
91  amxc_var_t ret;
92 
93  amxd_object_t* root = amxd_dm_get_root(dm);
94  amxd_object_t* object = amxd_object_get_child(root, "TestObject");
95 
96  amxc_var_init(&args);
97  amxc_var_init(&ret);
98  amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
99 
100  assert_ptr_not_equal(object, NULL);
101 
102  assert_int_equal(amxd_object_invoke_function(object, "TestFunc1", &args, &ret), amxd_status_ok);
103  assert_int_equal(amxd_object_invoke_function(object, "TestFunc2", &args, &ret), amxd_status_ok);
104  assert_int_equal(amxd_object_invoke_function(object, "TestFunc3", &args, &ret), func3 ? amxd_status_ok : amxd_status_function_not_implemented);
105  assert_int_equal(amxd_object_invoke_function(object, "TestFunc4", &args, &ret), amxd_status_function_not_implemented);
106 
107  amxc_var_clean(&args);
108  amxc_var_clean(&ret);
109 }

◆ check_can_not_invoke_functions()

static void check_can_not_invoke_functions ( amxd_dm_t *  dm)
static

Definition at line 111 of file test_ftab_resolver.c.

111  {
112  amxc_var_t args;
113  amxc_var_t ret;
114 
115  amxd_object_t* root = amxd_dm_get_root(dm);
116  amxd_object_t* object = amxd_object_get_child(root, "TestObject");
117 
118  amxc_var_init(&args);
119  amxc_var_init(&ret);
120  amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
121 
122  assert_ptr_not_equal(object, NULL);
123 
124  assert_int_equal(amxd_object_invoke_function(object, "TestFunc1", &args, &ret), amxd_status_function_not_implemented);
125  assert_int_equal(amxd_object_invoke_function(object, "TestFunc2", &args, &ret), amxd_status_function_not_implemented);
126  assert_int_equal(amxd_object_invoke_function(object, "TestFunc3", &args, &ret), amxd_status_function_not_implemented);
127  assert_int_equal(amxd_object_invoke_function(object, "TestFunc4", &args, &ret), amxd_status_function_not_implemented);
128 
129  amxc_var_clean(&args);
130  amxc_var_clean(&ret);
131 }

◆ dm_method_impl()

static amxd_status_t dm_method_impl ( UNUSED amxd_object_t *  object,
UNUSED amxd_function_t *  func,
UNUSED amxc_var_t *  args,
UNUSED amxc_var_t *  ret 
)
static

Definition at line 82 of file test_ftab_resolver.c.

85  {
86  return amxd_status_ok;
87 }

◆ test_ftab_resolver_invalid_args()

void test_ftab_resolver_invalid_args ( UNUSED void **  state)

Definition at line 166 of file test_ftab_resolver.c.

166  {
167  amxd_dm_t dm;
168  amxo_parser_t parser;
169 
170  amxd_dm_init(&dm);
171  amxo_parser_init(&parser);
172 
173  assert_int_not_equal(amxo_resolver_ftab_add(NULL, "TestFunc1", AMXO_FUNC(dm_method_impl)), 0);
174  assert_int_not_equal(amxo_resolver_ftab_add(&parser, NULL, AMXO_FUNC(dm_method_impl)), 0);
175  assert_int_not_equal(amxo_resolver_ftab_add(&parser, "", AMXO_FUNC(dm_method_impl)), 0);
176  assert_int_not_equal(amxo_resolver_ftab_add(&parser, "TestFunc1", AMXO_FUNC(NULL)), 0);
177  assert_int_not_equal(amxo_resolver_ftab_add(&parser, "1", AMXO_FUNC(dm_method_impl)), 0);
178  assert_int_not_equal(amxo_resolver_ftab_add(&parser, "1Testfunc", AMXO_FUNC(dm_method_impl)), 0);
179  assert_int_not_equal(amxo_resolver_ftab_add(&parser, "Test:func", AMXO_FUNC(dm_method_impl)), 0);
180  assert_int_equal(amxo_resolver_ftab_add(&parser, "TestFunc1", AMXO_FUNC(dm_method_impl)), 0);
181  assert_int_not_equal(amxo_resolver_ftab_add(&parser, "TestFunc1", AMXO_FUNC(dm_method_impl)), 0);
182 
184 
185  assert_int_not_equal(amxo_resolver_ftab_remove(NULL, "internal_name"), 0);
186  assert_int_not_equal(amxo_resolver_ftab_remove(&parser, NULL), 0);
187  assert_int_not_equal(amxo_resolver_ftab_remove(&parser, ""), 0);
188  assert_int_equal(amxo_resolver_ftab_remove(&parser, "TestFunc1"), 0);
189  assert_int_equal(amxo_resolver_ftab_remove(&parser, "TestFunc1"), 0);
190  assert_int_equal(amxo_resolver_ftab_remove(&parser, "TestFunc1"), 0);
191 
192  amxo_parser_clean(&parser);
193  amxd_dm_clean(&dm);
194 }
void amxo_parser_clean(amxo_parser_t *parser)
Cleans up the odl parser instance.
int amxo_parser_init(amxo_parser_t *parser)
Initializes a new odl parser instance.
int amxo_resolver_ftab_add(amxo_parser_t *parser, const char *fn_name, amxo_fn_ptr_t fn)
Adds a C function to the function table.
int amxo_resolver_ftab_remove(amxo_parser_t *parser, const char *fn_name)
Removes a function from the function table.
void amxo_resolver_ftab_clear(amxo_parser_t *parser)
Removes all functions from the function table.
#define AMXO_FUNC(x)
Function ponter caster macro.
Definition: amxo_types.h:80
The ODL parser structure.
Definition: amxo_types.h:245
static amxd_status_t dm_method_impl(UNUSED amxd_object_t *object, UNUSED amxd_function_t *func, UNUSED amxc_var_t *args, UNUSED amxc_var_t *ret)

◆ test_ftab_resolver_resolves()

void test_ftab_resolver_resolves ( UNUSED void **  state)

Definition at line 133 of file test_ftab_resolver.c.

133  {
134  amxd_dm_t dm;
135  amxo_parser_t parser;
136 
137  amxd_dm_init(&dm);
138  amxo_parser_init(&parser);
139 
140  assert_int_equal(amxo_resolver_ftab_add(&parser, "TestFunc1", AMXO_FUNC(dm_method_impl)), 0);
141  assert_int_equal(amxo_resolver_ftab_add(&parser, "TestFunc2", AMXO_FUNC(dm_method_impl)), 0);
142  assert_int_equal(amxo_resolver_ftab_add(&parser, "internal_name", AMXO_FUNC(dm_method_impl)), 0);
143  assert_int_equal(amxo_resolver_ftab_add(&parser, "TestObject.TestFunc5", AMXO_FUNC(dm_method_impl)), 0);
144  assert_int_equal(amxo_parser_parse_file(&parser, "test_valid.odl", amxd_dm_get_root(&dm)), 0);
145  assert_int_equal(amxo_parser_get_status(&parser), amxd_status_ok);
146 
147  check_can_invoke_functions(&dm, true);
148 
149  amxd_dm_clean(&dm);
150  assert_int_equal(amxo_resolver_ftab_remove(&parser, "internal_name"), 0);
151  assert_int_equal(amxo_parser_parse_file(&parser, "test_valid.odl", amxd_dm_get_root(&dm)), 0);
152  assert_int_equal(amxo_parser_get_status(&parser), amxd_status_ok);
153 
154  check_can_invoke_functions(&dm, false);
155 
156  amxd_dm_clean(&dm);
157  amxo_resolver_ftab_clear(&parser);
158  assert_int_equal(amxo_parser_parse_file(&parser, "test_valid.odl", amxd_dm_get_root(&dm)), 0);
159  assert_int_equal(amxo_parser_get_status(&parser), amxd_status_ok);
161 
162  amxo_parser_clean(&parser);
163  amxd_dm_clean(&dm);
164 }
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
static void check_can_invoke_functions(amxd_dm_t *dm, bool func3)
static void check_can_not_invoke_functions(amxd_dm_t *dm)