65 #include <amxc/amxc.h>
66 #include <amxp/amxp_signal.h>
67 #include <amxp/amxp_slot.h>
68 #include <amxp/amxp_timer.h>
77 #include <amxc/amxc_macros.h>
89 amxc_var_t* param3_val = NULL;
92 amxc_var_init(&def_val);
103 assert_int_equal(
amxd_param_new(¶m,
"Alias", AMXC_VAR_ID_CSTRING), 0);
108 assert_int_equal(
amxd_param_new(¶m,
"param1", AMXC_VAR_ID_CSTRING), 0);
111 assert_int_equal(
amxd_param_new(¶m,
"param2", AMXC_VAR_ID_UINT32), 0);
115 assert_int_equal(
amxd_param_new(¶m,
"param3", AMXC_VAR_ID_UINT32), 0);
119 assert_int_equal(
amxd_function_new(&func,
"func1", AMXC_VAR_ID_HTABLE, NULL), 0);
121 amxc_var_set(uint32_t, &def_val, 10);
129 assert_int_equal(
amxd_param_new(¶m,
"Alias", AMXC_VAR_ID_CSTRING), 0);
139 assert_int_equal(
amxd_param_new(¶m,
"param1", AMXC_VAR_ID_CSTRING), 0);
142 assert_int_equal(
amxd_param_new(¶m,
"param2", AMXC_VAR_ID_UINT32), 0);
146 assert_int_equal(
amxd_param_new(¶m,
"param3", AMXC_VAR_ID_BOOL), 0);
149 assert_int_equal(
amxd_function_new(&func,
"func1", AMXC_VAR_ID_HTABLE, NULL), 0);
151 amxc_var_set(uint32_t, &def_val, 10);
155 amxc_var_set_type(&def_val, AMXC_VAR_ID_HTABLE);
156 param3_val = amxc_var_add_key(uint32_t, &def_val,
"param3", 1);
158 amxc_var_set(uint32_t, param3_val, 2);
160 amxc_var_set(uint32_t, param3_val, 3);
162 amxc_var_set(uint32_t, param3_val, 4);
164 amxc_var_set(uint32_t, param3_val, 5);
166 amxc_var_set(uint32_t, param3_val, 6);
168 amxc_var_set(uint32_t, param3_val, 7);
173 amxc_var_clean(&def_val);
187 amxc_var_t* params = NULL;
189 amxc_var_init(&args);
190 amxc_var_init(&retval);
193 assert_non_null(
template);
195 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
196 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
197 amxc_var_add_key(cstring_t, params,
"param1",
"TEST");
200 amxc_var_dump(&retval, STDOUT_FILENO);
201 assert_non_null(GETP_ARG(&retval,
"'Main.Template.1.'"));
203 assert_int_equal(amxc_var_type_of(&retval), AMXC_VAR_ID_HTABLE);
205 amxc_var_clean(&retval);
206 amxc_var_clean(&args);
213 amxc_var_t* params = NULL;
215 amxc_var_init(&args);
216 amxc_var_init(&retval);
219 assert_non_null(
template);
221 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
222 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
223 amxc_var_add_key(uint32_t, params,
"param3", 2);
226 amxc_var_dump(&retval, STDOUT_FILENO);
227 assert_non_null(GETP_ARG(&retval,
"'Main.Template.1.'"));
229 assert_int_equal(amxc_var_type_of(&retval), AMXC_VAR_ID_HTABLE);
231 amxc_var_clean(&retval);
232 amxc_var_clean(&args);
239 amxc_var_t* params = NULL;
241 amxc_var_init(&args);
242 amxc_var_init(&retval);
245 assert_non_null(root);
247 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
248 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
249 amxc_var_add_key(cstring_t, params,
"param1",
"TEST");
250 amxc_var_add_key(cstring_t, &args,
"rel_path",
"Template.*.");
253 amxc_var_dump(&retval, STDOUT_FILENO);
254 assert_non_null(GETP_ARG(&retval,
"'Main.Template.1.'"));
255 assert_non_null(GETP_ARG(&retval,
"'Main.Template.2.'"));
256 assert_non_null(GETP_ARG(&retval,
"'Main.Template.3.'"));
257 assert_non_null(GETP_ARG(&retval,
"'Main.Template.4.'"));
258 assert_non_null(GETP_ARG(&retval,
"'Main.Template.5.'"));
259 assert_non_null(GETP_ARG(&retval,
"'Main.Template.6.'"));
260 assert_non_null(GETP_ARG(&retval,
"'Main.Template.7.'"));
263 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
264 amxc_var_add_key(cstring_t, params,
"param1",
"TEST");
265 amxc_var_add_key(cstring_t, &args,
"rel_path",
"[Alias == 'YAI1' || Alias == 'YAI2'].");
268 amxc_var_dump(&retval, STDOUT_FILENO);
269 assert_non_null(GETP_ARG(&retval,
"'Main.Template.5.'"));
270 assert_non_null(GETP_ARG(&retval,
"'Main.Template.6.'"));
272 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
273 amxc_var_add_key(cstring_t, params,
"param1",
"TEST");
274 amxc_var_add_key(cstring_t, &args,
"rel_path",
"[Alias == 'FOO' || Alias == 'BAR'].");
276 amxc_var_dump(&retval, STDOUT_FILENO);
278 amxc_var_clean(&retval);
281 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
282 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
283 amxc_var_add_key(cstring_t, params,
"param1",
"TEST2");
284 amxc_var_add_key(cstring_t, &args,
"rel_path",
"Template.YAI1.");
286 amxc_var_dump(&retval, STDOUT_FILENO);
287 assert_non_null(GETP_ARG(&retval,
"'Main.Template.5.'"));
289 amxc_var_clean(&retval);
290 amxc_var_clean(&args);
297 amxc_var_t* params = NULL;
299 amxc_var_init(&args);
300 amxc_var_init(&retval);
303 assert_non_null(root);
305 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
306 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
307 amxc_var_add_key(cstring_t, params,
"param1",
"TEST");
308 amxc_var_add_key(cstring_t, &args,
"rel_path",
"NotExisting.Object.");
311 amxc_var_clean(&retval);
312 amxc_var_clean(&args);
320 amxc_var_t* params = NULL;
322 amxc_var_init(&args);
323 amxc_var_init(&retval);
326 assert_non_null(obj);
328 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
329 amxc_var_add_key(uint32_t, &args,
"access", 100);
330 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
331 amxc_var_add_key(cstring_t, params,
"param1",
"TEST");
334 amxc_var_clean(&retval);
335 amxc_var_clean(&args);
342 amxc_var_t* params = NULL;
345 amxc_var_init(&args);
346 amxc_var_init(&retval);
347 amxc_var_init(&verify);
350 assert_non_null(singleton);
352 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
353 amxc_var_add_key(uint32_t, &args,
"access", 100);
354 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
355 amxc_var_add_key(cstring_t, params,
"param1",
"TEST");
356 amxc_var_add_key(uint32_t, params,
"param2", 1024);
358 amxc_var_dump(&retval, STDOUT_FILENO);
359 assert_int_equal(amxc_var_type_of(GETP_ARG(&retval,
"'Main.Singleton.'.param2")), AMXC_VAR_ID_HTABLE);
360 assert_int_equal(GETP_UINT32(&retval,
"'Main.Singleton.'.param2.error_code"), 15);
361 assert_true(GETP_BOOL(&retval,
"'Main.Singleton.'.param2.required"));
364 assert_int_equal(GET_UINT32(&verify,
"param2"), 0);
365 assert_string_equal(GET_CHAR(&verify,
"param1"),
"");
367 amxc_var_clean(&retval);
368 amxc_var_clean(&args);
369 amxc_var_clean(&verify);
376 amxc_var_t* params = NULL;
379 amxc_var_init(&args);
380 amxc_var_init(&retval);
381 amxc_var_init(&verify);
384 assert_non_null(singleton);
386 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
387 amxc_var_add_key(uint32_t, &args,
"access", 100);
388 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
389 amxc_var_add_key(cstring_t, params,
"param1",
"TEST");
390 amxc_var_add_key(uint32_t, params,
"param2", 1024);
392 amxc_var_dump(&retval, STDOUT_FILENO);
395 assert_int_equal(GET_UINT32(&verify,
"param2"), 0);
396 assert_string_equal(GET_CHAR(&verify,
"param1"),
"");
398 amxc_var_clean(&retval);
399 amxc_var_clean(&args);
400 amxc_var_clean(&verify);
408 amxc_var_t* params = NULL;
411 amxc_var_init(&args);
412 amxc_var_init(&retval);
413 amxc_var_init(&verify);
416 assert_non_null(singleton);
418 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
420 params = amxc_var_add_key(amxc_htable_t, &args,
"oparameters", NULL);
421 amxc_var_add_key(cstring_t, params,
"param1",
"TEST");
422 amxc_var_add_key(uint32_t, params,
"param2", 1024);
423 amxc_var_add_key(cstring_t, params,
"param3",
"not valid value");
425 amxc_var_dump(&retval, STDOUT_FILENO);
426 assert_int_equal(amxc_var_type_of(GETP_ARG(&retval,
"'Main.Singleton.'.param2")), AMXC_VAR_ID_HTABLE);
427 assert_int_equal(GETP_UINT32(&retval,
"'Main.Singleton.'.param2.error_code"), 15);
428 assert_false(GETP_BOOL(&retval,
"'Main.Singleton.'.param2.required"));
431 amxc_var_dump(&verify, STDOUT_FILENO);
432 assert_int_equal(GET_UINT32(&verify,
"param2"), 0);
433 assert_string_equal(GET_CHAR(&verify,
"param1"),
"TEST");
435 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
437 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
438 amxc_var_add_key(cstring_t, params,
"param3",
"not valid value");
439 params = amxc_var_add_key(amxc_htable_t, &args,
"oparameters", NULL);
440 amxc_var_add_key(cstring_t, params,
"param1",
"TEST");
441 amxc_var_add_key(uint32_t, params,
"param2", 1024);
443 amxc_var_dump(&retval, STDOUT_FILENO);
445 amxc_var_clean(&retval);
446 amxc_var_clean(&args);
447 amxc_var_clean(&verify);
Ambiorix Data Model API header file.
amxd_object_t * amxd_dm_findf(amxd_dm_t *const dm, const char *abs_path,...) __attribute__((format(printf
Ambiorix Data Model API header file.
Ambiorix Data Model API header file.
amxd_status_t amxd_param_new(amxd_param_t **param, const char *name, const uint32_t type)
amxd_status_t amxd_param_set_attr(amxd_param_t *param, const amxd_pattr_id_t attr, const bool enable)
Ambiorix Data Model API header file.
@ amxd_dm_access_protected
amxd_status_t amxd_dm_add_root_object(amxd_dm_t *const dm, amxd_object_t *const object)
Adds an object to the root of the data model.
amxd_status_t amxd_dm_init(amxd_dm_t *dm)
Initializes a data model structure.
void amxd_dm_clean(amxd_dm_t *dm)
Cleans a data model structure.
amxd_object_t * amxd_object_findf(amxd_object_t *object, const char *rel_path,...) __attribute__((format(printf
Find an object in the data model tree, starting from an object.
amxd_status_t amxd_object_add_object(amxd_object_t *const parent, amxd_object_t *const child)
Adds an object in the data model tree.
amxd_status_t amxd_object_get_params(amxd_object_t *const object, amxc_var_t *const params, amxd_dm_access_t access)
Gets all parameter values of an object.
amxd_status_t amxd_object_add_param(amxd_object_t *const object, amxd_param_t *const param)
Adds a parameter definition to an object.
amxd_status_t amxd_object_add_function(amxd_object_t *const object, amxd_function_t *const func)
Adds an RPC method definition to the object definition.
amxd_status_t amxd_object_invoke_function(amxd_object_t *const object, const char *func_name, amxc_var_t *const args, amxc_var_t *const ret)
Calls an object RPC method.
amxd_status_t amxd_object_set_attr(amxd_object_t *const object, const amxd_oattr_id_t attr, const bool enable)
Sets or unsets an object attribute.
amxd_status_t amxd_object_new(amxd_object_t **object, const amxd_object_type_t type, const char *name)
Data model object constructor function.
amxd_status_t amxd_object_add_instance(amxd_object_t **object, amxd_object_t *templ, const char *name, uint32_t index, amxc_var_t *values)
Data model object constructor function.
amxd_status_t amxd_function_new(amxd_function_t **func, const char *name, const uint32_t ret_type, amxd_object_fn_t impl)
Data model RPC method constructor function.
amxd_status_t amxd_function_new_arg(amxd_function_t *func, const char *name, const uint32_t type, amxc_var_t *default_value)
Adds an argument definition to a RPC method definition.
void test_amxd_set_fails_if_not_partial(UNUSED void **state)
void test_amxd_set_fails_with_invalid_rel_path(UNUSED void **state)
int test_function_set_teardown(UNUSED void **state)
void test_amxd_set_optional(UNUSED void **state)
void test_amxd_can_set_instance_object(UNUSED void **state)
void test_amxd_set_can_use_rel_path(UNUSED void **state)
void test_amxd_set_fails_if_unique_value_exists(UNUSED void **state)
int test_function_set_setup(UNUSED void **state)
void test_amxd_set_can_use_to_high_access(UNUSED void **state)
void test_amxd_set_partial(UNUSED void **state)