65 #include <sys/signalfd.h>
68 #include <amxc/amxc.h>
69 #include <amxp/amxp_signal.h>
70 #include <amxp/amxp_slot.h>
71 #include <amxp/amxp_expression.h>
80 #include <amxc/amxc_macros.h>
89 amxc_var_t* str = NULL;
90 amxc_var_t* nmbr = NULL;
93 amxc_var_set_type(&data, AMXC_VAR_ID_HTABLE);
94 str = amxc_var_add_key(cstring_t, &data,
"Param1",
"TestData");
95 amxc_var_add_key(
bool, &data,
"Param2",
true);
96 nmbr = amxc_var_add_key(uint32_t, &data,
"Param3", 666);
106 assert_int_equal(
amxd_param_new(¶m,
"Param1", AMXC_VAR_ID_CSTRING), 0);
108 assert_int_equal(
amxd_param_new(¶m,
"Param2", AMXC_VAR_ID_BOOL), 0);
110 assert_int_equal(
amxd_param_new(¶m,
"Param3", AMXC_VAR_ID_UINT32), 0);
117 assert_int_equal(
amxd_param_new(¶m,
"Param1", AMXC_VAR_ID_CSTRING), 0);
119 assert_int_equal(
amxd_param_new(¶m,
"Param2", AMXC_VAR_ID_BOOL), 0);
121 assert_int_equal(
amxd_param_new(¶m,
"Param3", AMXC_VAR_ID_UINT32), 0);
128 amxc_var_set(cstring_t, str,
"Hello");
129 amxc_var_set(uint32_t, nmbr, 1234);
133 amxc_var_set(cstring_t, str,
"World");
134 amxc_var_set(uint32_t, nmbr, 2020);
138 amxc_var_set(cstring_t, str,
"Hello");
139 amxc_var_set(uint32_t, nmbr, 2020);
142 amxc_var_clean(&data);
158 amxp_expr_t expression;
160 assert_int_equal(amxp_expr_init(&expression,
"Param1==\"TestData\" && Param3 == 666"), 0);
173 amxp_expr_clean(&expression);
178 amxp_expr_t expression;
182 assert_int_equal(amxp_expr_init(&expression,
"ChildObject1.Param1==\"TestData\" && ChildObject1.Param3 == 666"), 0);
184 amxp_expr_clean(&expression);
186 assert_int_equal(amxp_expr_init(&expression,
"ChildObject2.1.Param9==\"TestData\" && ChildObject2.1.Param3 == 666"), 0);
188 amxp_expr_clean(&expression);
190 assert_int_equal(amxp_expr_init(&expression,
"ChildObject2.1.Param1==\"TestData\" && ChildObject2.1.Param3 == 666"), 0);
193 amxp_expr_clean(&expression);
198 amxp_expr_t expression;
202 assert_int_equal(amxp_expr_init(&expression,
"Param1==\"Hello\" && Param3 > 1000"), 0);
204 amxp_expr_clean(&expression);
209 amxp_expr_t expression;
210 amxp_expr_t* expr = NULL;
213 amxc_var_init(&data);
216 assert_int_equal(amxp_expr_init(&expression,
"Param1==\"Hello\" && Param3 > 1000"), 0);
230 assert_ptr_equal(expr, NULL);
232 amxc_var_set_type(&data, AMXC_VAR_ID_HTABLE);
234 assert_ptr_equal(expr, NULL);
237 assert_ptr_equal(expr, NULL);
239 amxp_expr_clean(&expression);
240 amxc_var_clean(&data);
246 amxp_expr_t expression;
248 assert_int_equal(amxp_expr_init(&expression,
"Param1==\"Hello\""), 0);
252 assert_ptr_not_equal(instance, NULL);
256 assert_ptr_not_equal(instance, NULL);
260 assert_ptr_equal(instance, NULL);
263 assert_ptr_equal(instance, NULL);
265 amxp_expr_clean(&expression);
270 amxp_expr_t expression;
272 assert_int_equal(amxp_expr_init(&expression,
".ChildObject2.3.Param3==2020"), 0);
275 amxp_expr_clean(&expression);
277 assert_int_equal(amxp_expr_init(&expression,
".Param3==2020"), 0);
286 amxp_expr_clean(&expression);
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.
bool amxd_object_matches_expr(amxd_object_t *const object, amxp_expr_t *expr)
amxd_status_t amxd_object_new_key_expr(amxd_object_t *const templ, amxp_expr_t **expr, const amxc_var_t *const data)
bool amxd_object_has_matching_instances(const amxd_object_t *const templ, amxp_expr_t *expr)
amxd_object_t * amxd_object_find_next_instance(const amxd_object_t *const instance, amxp_expr_t *expr)
amxd_object_t * amxd_object_find_instance(const amxd_object_t *const templ, amxp_expr_t *expr)
amxd_status_t amxd_param_new(amxd_param_t **param, const char *name, const uint32_t type)
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_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_set_params(amxd_object_t *const object, amxc_var_t *const values)
Sets multiple parameter values in a data model 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.
uint32_t amxd_object_get_index(const amxd_object_t *const object)
Get the index of an instance object.
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 test_expression_fields_are_retrieved_in_hierarchy(UNUSED void **state)
void test_expression_has_matching_instances(UNUSED void **state)
void test_can_iterator_over_all_matching_instances(UNUSED void **state)
static void test_build_dm(void)
int test_object_expression_setup(UNUSED void **state)
void test_can_start_path_with_dot_in_expr(UNUSED void **state)
int test_object_expression_teardown(UNUSED void **state)
void test_can_match_object_with_expression(UNUSED void **state)
void test_api_does_input_arg_validation(UNUSED void **state)