64 #include <amxc/amxc.h>
65 #include <amxp/amxp_signal.h>
66 #include <amxp/amxp_slot.h>
75 #include <amxc/amxc_macros.h>
80 assert_ptr_not_equal(
object, NULL);
81 assert_ptr_not_equal(func, NULL);
82 assert_ptr_not_equal(args, NULL);
83 assert_ptr_not_equal(ret, NULL);
84 assert_int_equal(amxc_var_type_of(args), AMXC_VAR_ID_HTABLE);
93 assert_ptr_not_equal(
object, NULL);
94 assert_ptr_not_equal(func, NULL);
95 assert_ptr_not_equal(args, NULL);
96 assert_ptr_not_equal(ret, NULL);
97 assert_int_equal(amxc_var_type_of(args), AMXC_VAR_ID_HTABLE);
106 assert_ptr_not_equal(
object, NULL);
107 assert_ptr_not_equal(func, NULL);
108 assert_ptr_not_equal(args, NULL);
109 assert_ptr_not_equal(ret, NULL);
110 assert_int_equal(amxc_var_type_of(args), AMXC_VAR_ID_HTABLE);
119 assert_ptr_not_equal(
function, NULL);
120 assert_ptr_equal(function->impl,
test_func);
121 assert_int_equal(function->ret_type, AMXC_VAR_ID_ANY);
122 assert_string_equal(function->name,
"test_func");
123 assert_int_equal(function->attr.instance, 0);
124 assert_int_equal(function->attr.priv, 0);
125 assert_int_equal(function->attr.templ, 0);
128 assert_ptr_equal(
function, NULL);
134 assert_ptr_equal(
function, NULL);
140 assert_int_equal(
amxd_function_new(&
function,
"test_func", AMXC_VAR_ID_CSTRING, NULL), 0);
141 assert_ptr_not_equal(
function, NULL);
145 assert_ptr_equal(
function, NULL);
148 assert_ptr_equal(
function, NULL);
151 assert_ptr_equal(
function, NULL);
153 assert_ptr_equal(
function, NULL);
155 assert_ptr_equal(
function, NULL);
157 assert_ptr_equal(
function, NULL);
169 assert_int_equal(cfunction->
ret_type, AMXC_VAR_ID_CSTRING);
170 assert_string_equal(cfunction->
name,
"test_func");
172 assert_int_equal(cfunction->
attr.
priv, 0);
173 assert_int_equal(cfunction->
attr.
templ, 0);
186 assert_int_equal(amxc_llist_size(&cfunction->
args), 2);
200 assert_int_equal(cfunction->
attr.
priv, 1);
201 assert_int_equal(amxc_llist_size(&cfunction->
args), 2);
217 assert_ptr_equal(cfunction, NULL);
255 assert_ptr_not_equal(
function, NULL);
259 assert_ptr_not_equal(instance_object, NULL);
264 assert_ptr_not_equal(
function, NULL);
270 assert_ptr_not_equal(
function, base_function);
276 assert_ptr_equal(base_function, NULL);
277 assert_ptr_not_equal(
function, NULL);
283 assert_ptr_not_equal(base_function, NULL);
284 assert_ptr_not_equal(
function, NULL);
285 assert_ptr_not_equal(
function, base_function);
317 amxc_var_init(&args);
327 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
333 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
337 assert_non_null(
function);
340 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
343 amxc_var_clean(&args);
344 amxc_var_clean(&ret);
421 amxc_var_init(&def_val);
422 amxc_var_init(&args);
424 amxc_var_set(uint32_t, &def_val, 10);
435 amxc_var_set(cstring_t, &def_val,
"Hello");
444 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
445 amxc_var_add_key(cstring_t, &args,
"arg1",
"0xFF");
446 amxc_var_add_key(uint32_t, &args,
"arg2", 123);
447 amxc_var_add_key(cstring_t, &args,
"arg3",
"test test");
449 amxc_var_clean(&args);
451 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
452 amxc_var_add_key(cstring_t, &args,
"arg1",
"0xFF");
453 amxc_var_add_key(
bool, &args,
"arg2",
true);
454 amxc_var_add_key(cstring_t, &args,
"arg3",
"test test");
456 amxc_var_clean(&args);
458 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
459 amxc_var_add_key(cstring_t, &args,
"arg1",
"0xFF");
460 amxc_var_add_key(uint32_t, &args,
"arg2", 999);
462 amxc_var_clean(&args);
464 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
465 amxc_var_add_key(uint32_t, &args,
"arg2", 999);
467 amxc_var_clean(&args);
469 amxc_var_set_type(&args, AMXC_VAR_ID_LIST);
470 amxc_var_add(cstring_t, &args,
"0xFF");
471 amxc_var_add(uint32_t, &args, 123);
472 amxc_var_add(cstring_t, &args,
"test test");
474 amxc_var_clean(&args);
478 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
482 amxc_var_add_key(cstring_t, &args,
"arg1",
"0xFF");
483 amxc_var_add_key(uint32_t, &args,
"arg2", 123);
484 amxc_var_add_key(cstring_t, &args,
"arg3",
"test test");
486 amxc_var_clean(&args);
492 assert_int_not_equal(
amxd_function_new_arg(
function,
"arg2", AMXC_VAR_ID_CUSTOM_BASE + 20, NULL), 0);
496 amxc_var_clean(&def_val);
506 amxc_var_init(&def_val);
507 amxc_var_init(&args);
509 amxc_var_set(uint32_t, &def_val, 10);
520 amxc_var_set(cstring_t, &def_val,
"Hello");
534 assert_non_null(GETP_ARG(&ret,
"flags.0"));
539 amxc_var_clean(&args);
540 amxc_var_clean(&ret);
542 amxc_var_clean(&def_val);
Ambiorix Data Model API header file.
Ambiorix Data Model RPC methods API header file.
Ambiorix Data Model API header file.
amxd_object_t * amxd_object_get_base(const amxd_object_t *const object)
enum _amxd_status amxd_status_t
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_get_parent(const amxd_object_t *const object)
Get the parent object.
amxd_object_t * amxd_object_get(const amxd_object_t *object, const char *name)
Get an instance or child of 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_change_function(amxd_object_t *const object, const char *name, amxd_object_fn_t impl)
Changes the implementation of an object's RPC method.
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_function_t * amxd_object_get_function(const amxd_object_t *const object, const char *name)
Get the definition of a RPC method from an object.
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_new_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_object_new(amxd_object_t **object, const amxd_object_type_t type, const char *name)
Data model object constructor function.
void amxd_object_delete(amxd_object_t **object)
Invokes the destroy handler(s) of the object.
amxd_status_t amxd_function_set_attr(amxd_function_t *func, const amxd_fattr_id_t attr, const bool enable)
Sets or unsets a method attribute.
amxd_status_t amxd_function_describe(amxd_function_t *const func, amxc_var_t *const value)
Fetches the full RPC method definition in a variant.
const char * amxd_function_get_name(const amxd_function_t *const func)
Get the name of a method.
void amxd_function_delete(amxd_function_t **func)
Data model RPC method destructor function.
amxd_status_t amxd_function_arg_set_attr(amxd_function_t *const func, const char *name, const amxd_aattr_id_t attr, const bool enable)
Sets or unsets a method argument attribute.
amxd_object_t * amxd_function_get_owner(const amxd_function_t *const func)
Get the object pointer of the object containing the function definition.
void amxd_function_unset_flag(amxd_function_t *func, const char *flag)
Removes a flag from a 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_call_base(const amxd_function_t *const func, amxd_object_t *const object, amxc_var_t *const args, amxc_var_t *const ret)
Call the base function of an overridden function.
amxd_status_t amxd_function_set_attrs(amxd_function_t *func, const uint32_t bitmask, bool enable)
Sets or unsets method attributes using a bitmap.
amxd_status_t amxd_function_copy(amxd_function_t **dest, const amxd_function_t *const source)
Data model RPC method copy constructor function.
bool amxd_function_is_attr_set(const amxd_function_t *const func, const amxd_fattr_id_t attr)
Checks if a method attribute is set.
bool amxd_function_has_flag(const amxd_function_t *const func, const char *flag)
Checks if a flag is set.
void amxd_function_set_flag(amxd_function_t *func, const char *flag)
Sets a flag on a function.
amxd_function_t * amxd_function_get_base(const amxd_function_t *const func)
Get the base function definition of an overridden 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.
amxd_status_t amxd_function_arg_set_attrs(amxd_function_t *func, const char *name, const uint32_t bitmask, bool enable)
Sets or unsets method argument attributes using a bitmap.
amxd_status_t amxd_function_set_impl(amxd_function_t *const func, amxd_object_fn_t impl)
Set an implementation for a RPC method.
amxc_llist_t derived_objects
amxc_llist_it_t derived_from
void test_amxd_function_new_delete_invalid_args(UNUSED void **state)
void test_amxd_function_are_args_valid(UNUSED void **state)
void test_amxd_function_new_delete(UNUSED void **state)
void test_amxd_function_get_base_invalid(UNUSED void **state)
void test_amxd_function_copy_with_args(UNUSED void **state)
void test_amxd_function_get_owner_invalid(UNUSED void **state)
static amxd_status_t test_func3(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
void test_amxd_can_call_base(UNUSED void **state)
void test_amxd_function_get_base(UNUSED void **state)
void test_amxd_function_flags(UNUSED void **state)
void test_amxd_function_copy(UNUSED void **state)
void test_amxd_function_copy_invalid(UNUSED void **state)
void test_amxd_function_attributes(UNUSED void **state)
static amxd_status_t test_func2(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
static amxd_status_t test_func(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
void test_amxd_function_get_name_invalid(UNUSED void **state)
void test_amxd_function_copy_with_attributes(UNUSED void **state)