64 #include <amxc/amxc.h>
65 #include <amxp/amxp_signal.h>
66 #include <amxp/amxp_slot.h>
77 #include <amxc/amxc_macros.h>
89 assert_int_equal(
amxd_param_new(¶m,
"Text", AMXC_VAR_ID_CSTRING), 0);
91 assert_int_equal(
amxd_param_new(¶m,
"Number", AMXC_VAR_ID_INT32), 0);
93 assert_int_equal(
amxd_param_new(¶m,
"Reference", AMXC_VAR_ID_CSV_STRING), 0);
95 assert_int_equal(
amxd_param_new(¶m,
"CsvText", AMXC_VAR_ID_CSV_STRING), 0);
99 assert_int_equal(
amxd_param_new(¶m,
"Number", AMXC_VAR_ID_INT32), 0);
112 amxc_var_set(uint32_t, data, 10);
114 amxc_var_init(&value);
118 amxc_var_set(cstring_t, &value,
"abcdefghij");
121 assert_null(GETP_ARG(&value,
"validate"));
124 amxc_var_dump(&value, STDOUT_FILENO);
125 assert_non_null(GETP_ARG(&value,
"validate.check_minimum_length"));
127 amxc_var_set(cstring_t, &value,
"");
131 amxc_var_set(cstring_t, &value,
"abcde");
133 amxc_var_set(cstring_t, &value,
"abcdefghij");
135 amxc_var_set(cstring_t, &value,
"abcdefghij12345");
137 amxc_var_set_type(&value, AMXC_VAR_ID_CSTRING);
141 amxc_var_set(cstring_t, &value,
"abcde");
145 amxc_var_set(cstring_t, &value,
"abcdefghij");
150 amxc_var_set(uint32_t, &value, 10);
154 amxc_var_set(cstring_t, &value,
"abcdefghij");
156 amxc_var_set(cstring_t, data,
"TestObject.Number");
159 amxc_var_set(cstring_t, &value,
"");
163 amxc_var_set(cstring_t, &value,
"abcde");
165 amxc_var_set(cstring_t, &value,
"abcdefghij");
167 amxc_var_set(cstring_t, &value,
"abcdefghij12345");
175 amxc_var_set(uint64_t, &value, 5);
177 amxc_var_set(uint64_t, &value, 10);
179 amxc_var_set(uint64_t, &value, 15);
183 amxc_var_set(int32_t, &value, 5);
188 amxc_var_set(cstring_t, &value,
"foo,bar");
190 amxc_var_set(cstring_t, &value,
"foo,bar,foo,bar");
193 amxc_var_delete(&data);
194 amxc_var_clean(&value);
205 amxc_var_init(&value);
207 amxc_var_set(uint32_t, data, 10);
213 assert_non_null(GETP_ARG(&value,
"validate.check_maximum_length"));
216 amxc_var_set(cstring_t, &value,
"abcde");
218 amxc_var_set(cstring_t, &value,
"abcdefghij");
220 amxc_var_set(cstring_t, &value,
"abcdefghij12345");
223 amxc_var_set_type(&value, AMXC_VAR_ID_CSTRING);
227 amxc_var_set(cstring_t, &value,
"abcdefghij12345");
231 amxc_var_set(cstring_t, &value,
"abcde");
238 amxc_var_set(uint32_t, &value, 10);
242 amxc_var_set(cstring_t, &value,
"abcdefghij");
244 amxc_var_set(cstring_t, data,
".SubObject.Number");
247 amxc_var_set(cstring_t, &value,
"abcde");
249 amxc_var_set(cstring_t, &value,
"abcdefghij");
251 amxc_var_set(cstring_t, &value,
"abcdefghij12345");
258 amxc_var_set(uint64_t, &value, 5);
260 amxc_var_set(uint64_t, &value, 10);
262 amxc_var_set(uint64_t, &value, 15);
270 amxc_var_set(cstring_t, &value,
"foo,bar");
272 amxc_var_set(cstring_t, &value,
"foo,bar,foo,bar");
275 amxc_var_delete(&data);
276 amxc_var_clean(&value);
286 amxc_var_init(&value);
288 amxc_var_set_type(data, AMXC_VAR_ID_HTABLE);
289 amxc_var_add_key(uint32_t, data,
"min", 10);
290 amxc_var_add_key(uint32_t, data,
"max", 20);
296 assert_non_null(GETP_ARG(&value,
"validate.check_range"));
299 amxc_var_set(cstring_t, &value,
"abcde");
301 amxc_var_set(cstring_t, &value,
"abcdefghij");
303 amxc_var_set(cstring_t, &value,
"abcdefghij12345");
305 amxc_var_set(cstring_t, &value,
"abcdefghij1234567890");
307 amxc_var_set(cstring_t, &value,
"abcdefghijklmnopqrstuvwxyz");
310 amxc_var_set_type(&value, AMXC_VAR_ID_CSTRING);
314 amxc_var_set(cstring_t, &value,
"abcde");
318 amxc_var_set(cstring_t, &value,
"abcdefghijkl");
324 amxc_var_set(uint64_t, &value, 5);
326 amxc_var_set(uint64_t, &value, 10);
328 amxc_var_set(uint64_t, &value, 15);
330 amxc_var_set(uint64_t, &value, 20);
332 amxc_var_set(uint64_t, &value, 26);
338 amxc_var_clean(data);
340 amxc_var_set(uint64_t, &value, 10);
343 amxc_var_delete(&data);
344 amxc_var_clean(&value);
355 amxc_var_set_type(data, AMXC_VAR_ID_LIST);
356 amxc_var_add(uint32_t, data, 10);
357 amxc_var_add(uint32_t, data, 20);
363 amxc_var_init(&value);
365 amxc_var_set(cstring_t, &value,
"abcde");
367 amxc_var_set(cstring_t, &value,
"abcdefghij");
369 amxc_var_set(cstring_t, &value,
"abcdefghij12345");
371 amxc_var_set(cstring_t, &value,
"abcdefghij1234567890");
373 amxc_var_set(cstring_t, &value,
"abcdefghijklmnopqrstuvwxyz");
376 amxc_var_set_type(&value, AMXC_VAR_ID_CSTRING);
380 amxc_var_set(cstring_t, &value,
"abcde");
384 amxc_var_set(cstring_t, &value,
"abcdefghijkl");
390 amxc_var_set(uint64_t, &value, 5);
392 amxc_var_set(uint64_t, &value, 10);
394 amxc_var_set(uint64_t, &value, 15);
396 amxc_var_set(uint64_t, &value, 20);
398 amxc_var_set(uint64_t, &value, 26);
404 amxc_var_clean(data);
406 amxc_var_set(uint64_t, &value, 10);
409 amxc_var_delete(&data);
410 amxc_var_clean(&value);
421 amxc_var_set_type(data, AMXC_VAR_ID_LIST);
422 amxc_var_add(uint32_t, data, 20);
423 amxc_var_add(uint32_t, data, 10);
429 amxc_var_init(&value);
431 amxc_var_set(cstring_t, &value,
"abcde");
433 amxc_var_set(cstring_t, &value,
"abcdefghijkl");
435 amxc_var_set(cstring_t, &value,
"abcdefghijklmnopqrstuv");
441 amxc_var_set(uint64_t, &value, 5);
443 amxc_var_set(uint64_t, &value, 15);
445 amxc_var_set(uint64_t, &value, 25);
448 amxc_var_delete(&data);
449 amxc_var_clean(&value);
461 amxc_var_init(&value);
463 amxc_var_set_type(data, AMXC_VAR_ID_LIST);
464 amxc_var_add(int32_t, data, 10);
465 amxc_var_add(uint64_t, data, 20);
466 amxc_var_add(int64_t, data, -10);
467 amxc_var_add(int64_t, data, -20);
472 assert_non_null(GETP_ARG(&value,
"validate.check_enum"));
475 amxc_var_set(uint64_t, &value, 5);
477 amxc_var_set(uint64_t, &value, 10);
479 amxc_var_set(int64_t, &value, -5);
481 amxc_var_set(int64_t, &value, -20);
483 amxc_var_set(int32_t, &value, -10);
485 amxc_var_set(uint32_t, &value, 0);
491 amxc_var_clean(data);
493 amxc_var_set(uint64_t, &value, 10);
496 amxc_var_delete(&data);
497 amxc_var_clean(&value);
510 amxc_var_set_type(data, AMXC_VAR_ID_LIST);
511 amxc_var_add(int32_t, data, 10);
512 amxc_var_add(uint64_t, data, 20);
513 amxc_var_add(int64_t, data, -10);
514 amxc_var_add(int64_t, data, -20);
519 amxc_var_init(&value);
521 amxc_var_set(uint64_t, &value, 5);
523 amxc_var_set(uint64_t, &value, 10);
525 amxc_var_set(cstring_t, &value,
"-5, 10");
527 amxc_var_set(cstring_t, &value,
"-20, 20");
529 amxc_var_set(int32_t, &value, -10);
531 amxc_var_set(uint32_t, &value, 0);
537 amxc_var_clean(data);
539 amxc_var_set(uint64_t, &value, 10);
542 amxc_var_delete(&data);
543 amxc_var_clean(&value);
553 const char* data_list[2] = {
"TestObject.Reference",
".Reference"};
555 for(i = 0; i < 2; i++) {
558 amxc_var_init(&value);
560 amxc_var_set(cstring_t, data, data_list[i]);
565 assert_non_null(GETP_ARG(&value,
"validate.check_is_in"));
567 amxc_var_clean(&value);
569 amxc_var_set(cstring_t, &value,
"universe");
575 amxc_var_set(cstring_t, &value,
"silly text");
577 amxc_var_set(cstring_t, &value,
"hello");
579 amxc_var_set(cstring_t, &value,
"Brussels");
581 amxc_var_set(cstring_t, &value,
"and");
583 amxc_var_set(cstring_t, &value,
"world");
585 amxc_var_set(cstring_t, &value,
"France");
591 amxc_var_clean(data);
593 amxc_var_set(cstring_t, &value,
"Europe");
596 amxc_var_delete(&data);
597 amxc_var_clean(&value);
609 const char* data_list[2] = {
"TestObject.Reference",
".Reference"};
611 for(i = 0; i < 2; i++) {
615 amxc_var_set(cstring_t, data, data_list[i]);
620 amxc_var_init(&value);
622 amxc_var_set(cstring_t, &value,
"universe,world");
628 amxc_var_set(cstring_t, &value,
"univers,silly text");
630 amxc_var_set(cstring_t, &value,
"world,hello");
632 amxc_var_set(cstring_t, &value,
"Brussels,Paris");
634 amxc_var_set(cstring_t, &value,
"world,and,universe");
636 amxc_var_set(cstring_t, &value,
"world");
638 amxc_var_set(cstring_t, &value,
"France");
644 amxc_var_clean(data);
646 amxc_var_set(cstring_t, &value,
"Europe");
649 amxc_var_delete(&data);
650 amxc_var_clean(&value);
662 const char* data_list[2] = {
"TestObject.InvalidReference",
"InvalidReference"};
664 for(i = 0; i < 2; i++) {
668 amxc_var_set(cstring_t, data, data_list[i]);
673 amxc_var_init(&value);
675 amxc_var_set(cstring_t, &value,
"universe");
677 amxc_var_set(cstring_t, &value,
"silly text");
679 amxc_var_set(cstring_t, &value,
"hello");
681 amxc_var_set(cstring_t, &value,
"Brussels");
683 amxc_var_set(cstring_t, &value,
"and");
685 amxc_var_set(cstring_t, &value,
"world");
687 amxc_var_set(cstring_t, &value,
"France");
691 amxc_var_set(cstring_t, data,
"TestObject.InvalidReference.");
693 amxc_var_set(cstring_t, &value,
"Brussels");
696 amxc_var_delete(&data);
697 amxc_var_clean(&value);
711 amxc_var_set_type(data, AMXC_VAR_ID_LIST);
712 amxc_var_add(int32_t, data, 10);
713 amxc_var_add(uint64_t, data, 20);
714 amxc_var_add(int64_t, data, -10);
715 amxc_var_add(int64_t, data, -20);
720 amxc_var_init(&value);
721 amxc_var_set(uint64_t, &value, 5);
725 amxc_var_delete(&data);
726 amxc_var_clean(&value);
Ambiorix Data Model Default actions header file.
Ambiorix Data Model API header file.
Ambiorix Data Model RPC methods API header file.
Ambiorix Data Model API header file.
amxd_status_t amxd_param_describe(amxd_param_t *const param, amxc_var_t *const value)
amxd_status_t amxd_param_validate(amxd_param_t *const param, const amxc_var_t *const value)
amxd_status_t amxd_param_new(amxd_param_t **param, const char *name, const uint32_t type)
amxd_status_t amxd_param_set_value(amxd_param_t *const param, const amxc_var_t *const value)
amxd_status_t amxd_param_add_action_cb(amxd_param_t *const param, const amxd_action_t reason, amxd_action_fn_t fn, void *priv)
amxd_status_t amxd_param_remove_action_cb(amxd_param_t *const param, const amxd_action_t reason, amxd_action_fn_t fn)
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_child(const amxd_object_t *object, const char *name)
Get a child of the 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.
#define amxd_object_set_value(type, object, name, value)
Helper macro for setting a value.
amxd_param_t * amxd_object_get_param_def(const amxd_object_t *const object, const char *name)
Gets a parameter definition from 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_new(amxd_object_t **object, const amxd_object_type_t type, const char *name)
Data model object constructor function.
amxd_status_t amxd_action_param_check_range(amxd_object_t *object, amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, void *priv)
Default check range parameter validate action implementation.
amxd_status_t amxd_action_param_check_is_in(amxd_object_t *object, amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, void *priv)
Default check is in parameter validate action implementation.
amxd_status_t amxd_action_param_check_enum(amxd_object_t *object, amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, void *priv)
Default check enum parameter validate action implementation.
amxd_status_t amxd_action_param_check_maximum(amxd_object_t *object, amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, void *priv)
Default check maximum parameter validate action implementation.
amxd_status_t amxd_action_param_check_minimum(amxd_object_t *object, amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, void *priv)
Default check minimum parameter validate action implementation.
void test_amxd_param_validate_reference(UNUSED void **state)
void test_amxd_param_validate_wrong_action(UNUSED void **state)
void test_amxd_param_csv_validate_enum(UNUSED void **state)
void test_amxd_param_validate_range_invalid(UNUSED void **state)
void test_amxd_param_validate_max(UNUSED void **state)
void test_amxd_param_validate_invalid_reference(UNUSED void **state)
void test_amxd_param_validate_enum(UNUSED void **state)
void test_amxd_param_validate_min(UNUSED void **state)
void test_amxd_param_validate_range_list(UNUSED void **state)
void test_amxd_param_csv_validate_reference(UNUSED void **state)
static amxd_object_t * test_build_dm(void)
void test_amxd_param_validate_range_table(UNUSED void **state)