63 #include <amxc/amxc_variant.h>
64 #include <amxc/amxc_htable.h>
65 #include <amxc/amxc_lqueue.h>
67 #include <amxp/amxp_signal.h>
68 #include <amxp/amxp_slot.h>
70 #include <amxd/amxd_dm.h>
71 #include <amxd/amxd_transaction.h>
73 #include <amxo/amxo.h>
77 #include <amxc/amxc_macros.h>
85 while(amxp_signal_read() == 0) {
91 assert_int_equal(amxb_connect(&
bus_ctx,
"dummy:/tmp/dummy.sock"), 0);
110 amxc_var_t* ptr_a = NULL;
111 amxc_var_t* ptr_b = NULL;
114 amxc_var_init(&data_a);
115 amxc_var_init(&data_b);
117 assert_int_equal(amxb_get(
bus_ctx,
"A.param_A", 0, &data_a, 5), 0);
118 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B", 0, &data_b, 5), 0);
119 ptr_a = GETP_ARG(&data_a,
"0.'A.'.param_A");
120 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B");
122 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
123 assert_int_not_equal(ret, 0);
131 amxc_var_clean(&data_b);
132 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B", 0, &data_b, 5), 0);
133 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B");
134 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
135 assert_int_equal(ret, 0);
138 amxc_var_clean(&data_a);
139 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
140 amxc_var_add_key(uint32_t, &data_a,
"param_A", 1234);
141 assert_int_equal(amxb_set(
bus_ctx,
"A.", &data_a, &data_a, 5), 0);
143 amxc_var_clean(&data_b);
144 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B", 0, &data_b, 5), 0);
145 ptr_a = GETP_ARG(&data_a,
"0.'A.'.param_A");
146 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B");
147 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
148 assert_int_equal(ret, 0);
153 amxc_var_clean(&data_a);
154 amxc_var_clean(&data_b);
162 amxc_var_t* ptr_a = NULL;
163 amxc_var_t* ptr_b = NULL;
166 amxc_var_init(&data_a);
167 amxc_var_init(&data_b);
169 assert_int_equal(amxb_get(
bus_ctx,
"A.", 3, &data_a, 5), 0);
170 assert_int_equal(amxb_get(
bus_ctx,
"B.", 3, &data_b, 5), 0);
171 ptr_a = GETP_ARG(&data_a,
"0.'A.'.param_A");
172 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B");
174 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
175 assert_int_not_equal(ret, 0);
177 ptr_a = GETP_ARG(&data_a,
"0.'A.object_A.'.param_A");
178 ptr_b = GETP_ARG(&data_b,
"0.'B.object_B.'.param_B");
180 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
181 assert_int_not_equal(ret, 0);
192 amxc_var_clean(&data_b);
193 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.param_B", 0, &data_b, 5), 0);
194 ptr_b = GETP_ARG(&data_b,
"0.'B.object_B.'.param_B");
195 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
196 assert_int_equal(ret, 0);
198 amxc_var_clean(&data_a);
199 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
200 amxc_var_add_key(cstring_t, &data_a,
"param_A",
"Updated string");
201 assert_int_equal(amxb_set(
bus_ctx,
"A.object_A.", &data_a, &data_a, 5), 0);
203 amxc_var_clean(&data_b);
204 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.param_B", 0, &data_b, 5), 0);
205 ptr_a = GETP_ARG(&data_a,
"0.'A.object_A.'.param_A");
206 ptr_b = GETP_ARG(&data_b,
"0.'B.object_B.'.param_B");
207 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
208 assert_int_equal(ret, 0);
213 amxc_var_clean(&data_a);
214 amxc_var_clean(&data_b);
222 amxc_var_t* ptr_a = NULL;
223 amxc_var_t* ptr_b = NULL;
226 amxc_var_init(&data_a);
227 amxc_var_init(&data_b);
229 assert_int_equal(amxb_get(
bus_ctx,
"A.object_A.param_A", 0, &data_a, 5), 0);
230 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.param_B", 0, &data_b, 5), 0);
231 ptr_a = GETP_ARG(&data_a,
"0.'A.object_A.'.param_A");
232 ptr_b = GETP_ARG(&data_b,
"0.'B.object_B.'.param_B");
234 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
235 assert_int_not_equal(ret, 0);
245 amxc_var_clean(&data_b);
246 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.param_B", 0, &data_b, 5), 0);
247 ptr_b = GETP_ARG(&data_b,
"0.'B.object_B.'.param_B");
248 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
249 assert_int_equal(ret, 0);
251 amxc_var_clean(&data_a);
252 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
253 amxc_var_add_key(cstring_t, &data_a,
"param_A",
"Updated string");
254 assert_int_equal(amxb_set(
bus_ctx,
"A.object_A.", &data_a, &data_a, 5), 0);
256 amxc_var_clean(&data_b);
257 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.param_B", 0, &data_b, 5), 0);
258 ptr_a = GETP_ARG(&data_a,
"0.'A.object_A.'.param_A");
259 ptr_b = GETP_ARG(&data_b,
"0.'B.object_B.'.param_B");
260 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
261 assert_int_equal(ret, 0);
266 amxc_var_clean(&data_a);
267 amxc_var_clean(&data_b);
274 amxc_var_t current_object_data;
275 amxc_var_t new_settings;
276 amxc_string_t new_flags_str;
278 const char* previous_flags = NULL;
280 amxc_var_init(¤t_object_data);
281 amxc_var_init(&new_settings);
282 amxc_string_init(&new_flags_str, 0);
283 amxc_var_set_type(&new_settings, AMXC_VAR_ID_HTABLE);
285 assert_int_equal(amxb_get(
bus_ctx, GET_CHAR(data,
"path"), 0, ¤t_object_data, 5), 0);
286 previous_flags = GETP_CHAR(¤t_object_data,
"0.0.flag");
288 amxc_string_setf(&new_flags_str,
"%s C", (previous_flags == NULL ?
"" : previous_flags));
290 amxc_var_add_key(cstring_t, &new_settings,
"flag", amxc_string_get(&new_flags_str, 0));
292 assert_int_equal(amxb_set(
bus_ctx, GET_CHAR(data,
"path"), &new_settings, &new_settings, 5), 0);
295 amxc_string_clean(&new_flags_str);
296 amxc_var_clean(&new_settings);
297 amxc_var_clean(¤t_object_data);
303 amxc_string_t new_flags_str;
305 amxc_string_init(&new_flags_str, 0);
307 amxc_var_clean(data);
309 amxc_string_setf(&new_flags_str,
"%c.%c_template.%d.", name, name, template_nr);
310 assert_int_equal(amxb_get(
bus_ctx, amxc_string_get(&new_flags_str, 0), 0, data, 5), 0);
311 amxc_string_prependf(&new_flags_str,
"0.'");
312 amxc_string_appendf(&new_flags_str,
"'.param_%c", name);
313 *ptr = GETP_ARG(data, amxc_string_get(&new_flags_str, 0));
315 amxc_string_clean(&new_flags_str);
318 static void check_parameter(amxc_var_t* data_a, amxc_var_t** ptr_a,
char name_a, amxc_var_t* data_b, amxc_var_t** ptr_b,
char name_b, uint32_t template_nr,
bool ptrs_equal) {
323 assert_int_equal(amxc_var_compare(*ptr_a, *ptr_b, &ret), 0);
325 assert_int_equal(ret, 0);
327 assert_int_not_equal(ret, 0);
336 amxc_var_t* ptr_a = NULL;
337 amxc_var_t* ptr_b = NULL;
339 amxc_var_init(&data_a);
340 amxc_var_init(&data_b);
344 assert_int_equal(strcmp(GETP_CHAR(&data_a,
"0.'A.A_template.1.'.flag"),
"AA"), 0);
345 assert_int_equal(strcmp(GETP_CHAR(&data_b,
"0.'B.B_template.1.'.flag"),
"BB"), 0);
359 assert_int_equal(strcmp(GETP_CHAR(&data_a,
"0.'A.A_template.1.'.flag"),
"AA C"), 0);
360 assert_int_equal(strcmp(GETP_CHAR(&data_b,
"0.'B.B_template.1.'.flag"),
"BB C"), 0);
364 assert_int_equal(strcmp(GETP_CHAR(&data_a,
"0.'A.A_template.2.'.flag"),
"AA C"), 0);
365 assert_int_equal(strcmp(GETP_CHAR(&data_b,
"0.'B.B_template.2.'.flag"),
"BB C"), 0);
368 amxc_var_clean(&data_a);
369 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
370 amxc_var_add_key(uint32_t, &data_a,
"param_A", 1234);
371 assert_int_equal(amxb_set(
bus_ctx,
"A.A_template.1.", &data_a, &data_a, 5), 0);
374 assert_int_equal(strcmp(GETP_CHAR(&data_a,
"0.'A.A_template.1.'.flag"),
"AA C C"), 0);
375 assert_int_equal(strcmp(GETP_CHAR(&data_b,
"0.'B.B_template.1.'.flag"),
"BB C C"), 0);
378 amxc_var_clean(&data_a);
379 assert_int_equal(amxb_add(
bus_ctx,
"A.A_template.", 3, NULL, NULL, &data_a, 5), 0);
382 assert_int_equal(strcmp(GETP_CHAR(&data_a,
"0.'A.A_template.3.'.flag"),
"AA C"), 0);
383 assert_int_equal(strcmp(GETP_CHAR(&data_b,
"0.'B.B_template.3.'.flag"),
"BB C"), 0);
386 amxc_var_clean(&data_a);
387 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
388 amxc_var_add_key(uint32_t, &data_a,
"param_A", 12345);
389 assert_int_equal(amxb_set(
bus_ctx,
"A.A_template.3.", &data_a, &data_a, 5), 0);
392 assert_int_equal(strcmp(GETP_CHAR(&data_a,
"0.'A.A_template.3.'.flag"),
"AA C C"), 0);
393 assert_int_equal(strcmp(GETP_CHAR(&data_b,
"0.'B.B_template.3.'.flag"),
"BB C C"), 0);
396 amxc_var_clean(&data_a);
397 assert_int_equal(amxb_del(
bus_ctx,
"A.A_template.", 3, NULL, &data_a, 5), 0);
399 amxc_var_clean(&data_b);
400 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template.3.", 0, &data_b, 5), 0);
401 assert_null(GETP_ARG(&data_b,
"0.0"));
406 amxc_var_clean(&data_a);
407 amxc_var_clean(&data_b);
414 amxc_var_t* ptr_a = NULL;
415 amxc_var_t* ptr_b = NULL;
417 amxc_var_init(&data_a);
418 amxc_var_init(&data_b);
422 assert_int_equal(strcmp(GETP_CHAR(&data_a,
"0.'A.A_template.1.'.flag"),
"AA"), 0);
423 assert_int_equal(strcmp(GETP_CHAR(&data_b,
"0.'B.B_template.1.'.flag"),
"BB"), 0);
434 amxc_var_clean(&data_a);
435 amxc_var_clean(&data_b);
443 amxc_var_t* ptr_a = NULL;
444 amxc_var_t* ptr_b = NULL;
447 amxc_var_init(&data_a);
448 amxc_var_init(&data_b);
450 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template.1.param_A", 0, &data_a, 5), 0);
451 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template.1.param_B", 0, &data_b, 5), 0);
452 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template.1.'.param_A");
453 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template.1.'.param_B");
455 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
456 assert_int_not_equal(ret, 0);
467 amxc_var_clean(&data_b);
468 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template.1.param_B", 0, &data_b, 5), 0);
469 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template.1.'.param_B");
470 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
471 assert_int_equal(ret, 0);
473 amxc_var_clean(&data_a);
474 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
475 amxc_var_add_key(uint32_t, &data_a,
"param_A", 1234);
476 assert_int_equal(amxb_set(
bus_ctx,
"A.A_template.1.", &data_a, &data_a, 5), 0);
478 amxc_var_clean(&data_b);
479 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template.1.param_B", 0, &data_b, 5), 0);
480 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template.1.'.param_A");
481 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template.1.'.param_B");
482 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
483 assert_int_equal(ret, 0);
488 amxc_var_clean(&data_a);
489 amxc_var_clean(&data_b);
495 amxc_var_t* ptr_a = GETP_ARG(data_a,
"0.'A.object_A.'.param_A");
496 amxc_var_t* ptr_b = GETP_ARG(data_b,
"0.'B.object_B.'.param_B");
498 when_failed(amxc_var_compare(ptr_a, ptr_b, &result), exit);
499 when_failed(result, exit);
501 ptr_a = GETP_ARG(data_a,
"0.'A.object_A.'.number_A");
502 ptr_b = GETP_ARG(data_b,
"0.'B.object_B.'.number_B");
504 when_failed(amxc_var_compare(ptr_a, ptr_b, &result), exit);
505 when_failed(result, exit);
519 amxc_var_init(&data_a);
520 amxc_var_init(&data_b);
522 assert_int_equal(amxb_get(
bus_ctx,
"A.object_A.", 0, &data_a, 5), 0);
523 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.", 0, &data_b, 5), 0);
535 amxc_var_clean(&data_b);
536 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.", 0, &data_b, 5), 0);
539 amxc_var_clean(&data_a);
540 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
541 amxc_var_add_key(cstring_t, &data_a,
"param_A",
"Updated string");
542 assert_int_equal(amxb_set(
bus_ctx,
"A.object_A.", &data_a, &data_a, 5), 0);
544 amxc_var_clean(&data_b);
545 assert_int_equal(amxb_get(
bus_ctx,
"A.object_A.", 0, &data_a, 5), 0);
546 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.", 0, &data_b, 5), 0);
552 amxc_var_clean(&data_a);
553 amxc_var_clean(&data_b);
562 amxc_var_init(&data_a);
563 amxc_var_init(&data_b);
565 assert_int_equal(amxb_get(
bus_ctx,
"A.object_A.", 0, &data_a, 5), 0);
566 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.", 0, &data_b, 5), 0);
578 amxc_var_clean(&data_a);
579 amxc_var_clean(&data_b);
580 assert_int_equal(amxb_get(
bus_ctx,
"A.object_A.", 0, &data_a, 5), 0);
581 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.", 0, &data_b, 5), 0);
584 amxc_var_clean(&data_a);
585 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
586 amxc_var_add_key(cstring_t, &data_a,
"param_A",
"Updated string");
587 assert_int_equal(amxb_set(
bus_ctx,
"A.object_A.", &data_a, &data_a, 5), 0);
589 amxc_var_clean(&data_a);
590 amxc_var_clean(&data_b);
591 assert_int_equal(amxb_get(
bus_ctx,
"A.object_A.", 0, &data_a, 5), 0);
592 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.", 0, &data_b, 5), 0);
595 amxc_var_clean(&data_a);
596 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
597 amxc_var_add_key(uint32_t, &data_a,
"number_A", 1234);
598 assert_int_equal(amxb_set(
bus_ctx,
"A.object_A.", &data_a, &data_a, 5), 0);
600 amxc_var_clean(&data_a);
601 amxc_var_clean(&data_b);
602 assert_int_equal(amxb_get(
bus_ctx,
"A.object_A.", 0, &data_a, 5), 0);
603 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.", 0, &data_b, 5), 0);
606 amxc_var_clean(&data_b);
607 amxc_var_set_type(&data_b, AMXC_VAR_ID_HTABLE);
608 amxc_var_add_key(uint32_t, &data_b,
"number_B", 4321);
609 assert_int_equal(amxb_set(
bus_ctx,
"B.object_B.", &data_b, &data_b, 5), 0);
611 amxc_var_clean(&data_a);
612 amxc_var_clean(&data_b);
613 assert_int_equal(amxb_get(
bus_ctx,
"A.object_A.", 0, &data_a, 5), 0);
614 assert_int_equal(amxb_get(
bus_ctx,
"B.object_B.", 0, &data_b, 5), 0);
620 amxc_var_clean(&data_a);
621 amxc_var_clean(&data_b);
628 amxc_var_t* ptr_a = NULL;
629 amxc_var_t* ptr_b = NULL;
632 amxc_var_init(&data_a);
633 amxc_var_init(&data_b);
635 assert_int_equal(amxb_get(
bus_ctx,
"A.param_A", 0, &data_a, 5), 0);
636 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B", 0, &data_b, 5), 0);
637 ptr_a = GETP_ARG(&data_a,
"0.'A.'.param_A");
638 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B");
640 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
641 assert_int_not_equal(ret, 0);
649 amxc_var_clean(&data_b);
650 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B", 0, &data_b, 5), 0);
651 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B");
652 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
653 assert_int_equal(ret, 0);
657 amxc_var_clean(&data_a);
658 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
659 amxc_var_add_key(uint32_t, &data_a,
"param_A", 1234);
660 assert_int_equal(amxb_set(
bus_ctx,
"A.", &data_a, &data_a, 5), 0);
661 amxc_var_clean(&data_a);
662 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
663 amxc_var_add_key(uint32_t, &data_a,
"param_A", 5678);
664 assert_int_equal(amxb_set(
bus_ctx,
"A.", &data_a, &data_a, 5), 0);
666 amxc_var_clean(&data_b);
667 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B", 0, &data_b, 5), 0);
668 ptr_a = GETP_ARG(&data_a,
"0.'A.'.param_A");
669 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B");
670 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
671 assert_int_equal(ret, 0);
675 amxc_var_clean(&data_a);
676 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
677 amxc_var_add_key(uint32_t, &data_a,
"param_A", 1234);
678 assert_int_equal(amxb_set(
bus_ctx,
"A.", &data_a, &data_a, 5), 0);
679 amxc_var_clean(&data_b);
680 amxc_var_set_type(&data_b, AMXC_VAR_ID_HTABLE);
681 amxc_var_add_key(uint32_t, &data_b,
"param_B", 4321);
682 assert_int_equal(amxb_set(
bus_ctx,
"B.", &data_b, &data_b, 5), 0);
684 amxc_var_clean(&data_b);
685 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B", 0, &data_b, 5), 0);
686 assert_int_equal(amxb_get(
bus_ctx,
"A.param_A", 0, &data_a, 5), 0);
687 assert_int_equal(GETP_INT32(&data_a,
"0.'A.'.param_A"), 4321);
688 assert_int_equal(GETP_INT32(&data_b,
"0.'B.'.param_B"), 1234);
693 amxc_var_clean(&data_a);
694 amxc_var_clean(&data_b);
702 amxc_var_t* ptr_a = NULL;
703 amxc_var_t* ptr_b = NULL;
705 amxc_var_init(&data_a);
706 amxc_var_init(&data_b);
726 amxc_var_clean(&data_a);
727 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
728 amxc_var_add_key(uint32_t, &data_a,
"param_A", 1234);
729 assert_int_equal(amxb_set(
bus_ctx,
"A.A_template.1.", &data_a, &data_a, 5), 0);
731 amxc_var_clean(&data_b);
732 amxc_var_set_type(&data_b, AMXC_VAR_ID_HTABLE);
733 amxc_var_add_key(uint32_t, &data_b,
"param_B", 1234);
734 assert_int_equal(amxb_set(
bus_ctx,
"B.B_template.2.", &data_b, &data_b, 5), 0);
736 amxc_var_clean(&data_a);
737 amxc_var_set_type(&data_a, AMXC_VAR_ID_HTABLE);
738 amxc_var_add_key(uint32_t, &data_a,
"param_A", 4321);
739 assert_int_equal(amxb_set(
bus_ctx,
"A.A_template.2.", &data_a, &data_a, 5), 0);
743 amxc_var_clean(&data_a);
744 amxc_var_clean(&data_b);
745 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template.", 1, &data_a, 5), 0);
746 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template.", 1, &data_b, 5), 0);
748 assert_int_equal(GETP_UINT32(&data_a,
"0.'A.A_template.1.'.param_A"), 1234);
749 assert_int_equal(GETP_UINT32(&data_b,
"0.'B.B_template.1.'.param_B"), 1234);
751 assert_int_equal(GETP_UINT32(&data_a,
"0.'A.A_template.2.'.param_A"), 1234);
752 assert_int_equal(GETP_UINT32(&data_b,
"0.'B.B_template.2.'.param_B"), 4321);
757 amxc_var_clean(&data_a);
758 amxc_var_clean(&data_b);
765 amxc_var_t* ptr_a = NULL;
766 amxc_var_t* ptr_b = NULL;
770 amxd_trans_init(&trans);
771 amxd_trans_set_attr(&trans, amxd_tattr_change_ro,
true);
773 amxc_var_init(&data_a);
774 amxc_var_init(&data_b);
776 assert_int_equal(amxb_get(
bus_ctx,
"A.param_A_ro", 0, &data_a, 5), 0);
777 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B_ro", 0, &data_b, 5), 0);
778 ptr_a = GETP_ARG(&data_a,
"0.'A.'.param_A_ro");
779 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B_ro");
781 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
782 assert_int_not_equal(ret, 0);
790 amxc_var_clean(&data_b);
791 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B_ro", 0, &data_b, 5), 0);
792 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B_ro");
793 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
794 assert_int_not_equal(ret, 0);
803 amxc_var_clean(&data_b);
804 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B_ro", 0, &data_b, 5), 0);
805 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B_ro");
806 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
807 assert_int_equal(ret, 0);
809 amxd_trans_select_pathf(&trans,
"A.");
810 amxd_trans_set_value(cstring_t, &trans,
"param_A_ro",
"I am written");
811 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
814 amxc_var_clean(&data_a);
815 assert_int_equal(amxb_get(
bus_ctx,
"A.param_A_ro", 0, &data_a, 5), 0);
816 amxc_var_clean(&data_b);
817 assert_int_equal(amxb_get(
bus_ctx,
"B.param_B_ro", 0, &data_b, 5), 0);
818 ptr_a = GETP_ARG(&data_a,
"0.'A.'.param_A_ro");
819 ptr_b = GETP_ARG(&data_b,
"0.'B.'.param_B_ro");
820 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
821 assert_int_equal(ret, 0);
826 amxc_var_clean(&data_a);
827 amxc_var_clean(&data_b);
828 amxd_trans_clean(&trans);
834 amxc_var_t* ptr_a = NULL;
835 amxc_var_t* ptr_b = NULL;
839 amxd_trans_init(&trans);
840 amxd_trans_set_attr(&trans, amxd_tattr_change_ro,
true);
842 amxc_var_init(&data_a);
843 amxc_var_init(&data_b);
847 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.", 2, &data_a, 5), 0);
848 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.", 0, &data_b, 5), 0);
853 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.", 2, &data_b, 5), 0);
854 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.1.'.param_A");
855 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.1.'.param_B");
856 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
857 assert_int_equal(ret, 0);
858 assert_string_equal(GET_CHAR(ptr_b, NULL),
"I am A template sub");
860 amxd_trans_select_pathf(&trans,
"A.A_template_sub.");
861 amxd_trans_add_inst(&trans, 2, NULL);
862 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
863 amxd_trans_clean(&trans);
866 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.2.", 0, &data_a, 5), 0);
867 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.2.", 0, &data_b, 5), 0);
868 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.2.'.param_A");
869 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.2.'.param_B");
870 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
871 assert_int_equal(ret, 0);
872 assert_string_equal(GET_CHAR(ptr_b, NULL),
"I am A template sub");
874 amxd_trans_init(&trans);
875 amxd_trans_select_pathf(&trans,
"B.B_template_sub.");
876 amxd_trans_add_inst(&trans, 3, NULL);
877 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
880 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.3.", 0, &data_a, 5), 0);
881 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.3.", 0, &data_b, 5), 0);
882 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.3.'.param_A");
883 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.3.'.param_B");
884 assert_string_equal(GET_CHAR(ptr_a, NULL),
"I am B template sub");
885 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
886 assert_int_equal(ret, 0);
888 amxc_var_clean(&data_a);
889 amxc_var_clean(&data_b);
890 amxd_trans_clean(&trans);
896 amxc_var_t* ptr_a = NULL;
897 amxc_var_t* ptr_b = NULL;
901 amxd_trans_init(&trans);
902 amxd_trans_set_attr(&trans, amxd_tattr_change_ro,
true);
904 amxc_var_init(&data_a);
905 amxc_var_init(&data_b);
909 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
910 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
915 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
916 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
917 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.1.A_sub.'.text_A");
918 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.1.B_sub.'.text_B");
919 assert_string_equal(GET_CHAR(ptr_b, NULL),
"I am A sub");
920 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
921 assert_int_equal(ret, 0);
925 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
926 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
927 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.1.A_sub.'.text_A");
928 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.1.B_sub.'.text_B");
929 assert_string_equal(GET_CHAR(ptr_b, NULL),
"I am A sub");
930 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
931 assert_int_equal(ret, 0);
933 amxd_trans_select_pathf(&trans,
"A.A_template_sub.");
934 amxd_trans_add_inst(&trans, 2, NULL);
935 amxd_trans_set_value(cstring_t, &trans,
"A_sub.text_A",
"Changed text");
936 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
937 amxd_trans_clean(&trans);
940 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.2.A_sub.", 0, &data_a, 5), 0);
941 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.2.B_sub.", 0, &data_b, 5), 0);
942 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.2.A_sub.'.text_A");
943 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.2.B_sub.'.text_B");
944 assert_string_equal(GET_CHAR(ptr_b, NULL),
"Changed text");
945 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
946 assert_int_equal(ret, 0);
948 amxd_trans_select_pathf(&trans,
"A.A_template_sub.");
949 amxd_trans_add_inst(&trans, 3, NULL);
950 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
951 amxd_trans_clean(&trans);
954 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.3.A_sub.", 0, &data_a, 5), 0);
955 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.3.B_sub.", 0, &data_b, 5), 0);
956 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.3.A_sub.'.text_A");
957 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.3.B_sub.'.text_B");
958 assert_string_equal(GET_CHAR(ptr_b, NULL),
"I am A sub");
959 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
960 assert_int_equal(ret, 0);
962 amxd_trans_select_pathf(&trans,
"B.B_template_sub.");
963 amxd_trans_add_inst(&trans, 4, NULL);
964 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
965 amxd_trans_clean(&trans);
968 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.4.A_sub.", 0, &data_a, 5), 0);
969 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.4.B_sub.", 0, &data_b, 5), 0);
970 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.4.A_sub.'.text_A");
971 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.4.B_sub.'.text_B");
972 assert_string_equal(GET_CHAR(ptr_b, NULL),
"I am B sub");
973 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
974 assert_int_equal(ret, 0);
976 amxc_var_clean(&data_a);
977 amxc_var_clean(&data_b);
978 amxd_trans_clean(&trans);
984 amxc_var_t* ptr_a = NULL;
985 amxc_var_t* ptr_b = NULL;
989 amxd_trans_init(&trans);
990 amxd_trans_set_attr(&trans, amxd_tattr_change_ro,
true);
992 amxc_var_init(&data_a);
993 amxc_var_init(&data_b);
997 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
998 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1001 assert_int_equal(amxo_parser_start_synchronize(
test_get_parser()), 0);
1003 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
1004 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1005 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.1.A_sub.'.text_A");
1006 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.1.B_sub.'.text_B");
1007 assert_string_equal(GET_CHAR(ptr_b, NULL),
"I am A sub");
1008 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
1009 assert_int_equal(ret, 0);
1013 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
1014 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1015 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.1.A_sub.'.text_A");
1016 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.1.B_sub.'.text_B");
1017 assert_string_equal(GET_CHAR(ptr_b, NULL),
"I am A sub");
1018 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
1019 assert_int_equal(ret, 0);
1021 amxd_trans_select_pathf(&trans,
"A.A_template_sub.");
1022 amxd_trans_add_inst(&trans, 2, NULL);
1023 amxd_trans_set_value(cstring_t, &trans,
"A_sub.text_A",
"Changed text");
1024 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
1025 amxd_trans_clean(&trans);
1028 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.2.A_sub.", 0, &data_a, 5), 0);
1029 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.2.B_sub.", 0, &data_b, 5), 0);
1030 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.2.A_sub.'.text_A");
1031 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.2.B_sub.'.text_B");
1032 assert_string_equal(GET_CHAR(ptr_b, NULL),
"Changed text");
1033 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
1034 assert_int_equal(ret, 0);
1036 amxd_trans_select_pathf(&trans,
"A.A_template_sub.");
1037 amxd_trans_add_inst(&trans, 3, NULL);
1038 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
1039 amxd_trans_clean(&trans);
1042 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.3.A_sub.", 0, &data_a, 5), 0);
1043 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.3.B_sub.", 0, &data_b, 5), 0);
1044 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.3.A_sub.'.text_A");
1045 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.3.B_sub.'.text_B");
1046 assert_string_equal(GET_CHAR(ptr_b, NULL),
"I am A sub");
1047 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
1048 assert_int_equal(ret, 0);
1050 amxd_trans_select_pathf(&trans,
"B.B_template_sub.");
1051 amxd_trans_add_inst(&trans, 4, NULL);
1052 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
1053 amxd_trans_clean(&trans);
1056 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.4.A_sub.", 0, &data_a, 5), 0);
1057 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.4.B_sub.", 0, &data_b, 5), 0);
1058 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.4.A_sub.'.text_A");
1059 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.4.B_sub.'.text_B");
1060 assert_string_equal(GET_CHAR(ptr_b, NULL),
"I am B sub");
1061 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
1062 assert_int_equal(ret, 0);
1064 amxc_var_clean(&data_a);
1065 amxc_var_clean(&data_b);
1066 amxd_trans_clean(&trans);
1072 amxc_var_t* ptr_a = NULL;
1073 amxc_var_t* ptr_b = NULL;
1077 amxd_trans_init(&trans);
1078 amxd_trans_set_attr(&trans, amxd_tattr_change_ro,
true);
1080 amxc_var_init(&data_a);
1081 amxc_var_init(&data_b);
1085 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
1086 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1089 assert_int_equal(amxo_parser_start_synchronize(
test_get_parser()), 0);
1091 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
1092 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1096 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
1097 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1099 amxd_trans_select_pathf(&trans,
"B.B_template_sub.");
1100 amxd_trans_add_inst(&trans, 1, NULL);
1101 amxd_trans_set_value(cstring_t, &trans,
"B_sub.text_B",
"Changed text");
1102 amxd_trans_set_value(cstring_t, &trans,
"param_B",
"Changed text");
1103 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
1104 amxd_trans_clean(&trans);
1107 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.", 2, &data_a, 5), 0);
1108 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.", 2, &data_b, 5), 0);
1109 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.1.A_sub.'.text_A");
1110 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.1.B_sub.'.text_B");
1111 assert_string_equal(GET_CHAR(ptr_a, NULL),
"Changed text");
1112 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
1113 assert_int_equal(ret, 0);
1114 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.1.'.param_A");
1115 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.1.'.param_B");
1116 assert_string_equal(GET_CHAR(ptr_a, NULL),
"Changed text");
1117 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
1118 assert_int_equal(ret, 0);
1120 amxd_trans_select_pathf(&trans,
"A.A_template_sub.");
1121 amxd_trans_del_inst(&trans, 1, NULL);
1122 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
1123 amxd_trans_clean(&trans);
1126 assert_int_not_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
1127 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1129 amxc_var_clean(&data_a);
1130 amxc_var_clean(&data_b);
1131 amxd_trans_clean(&trans);
1137 amxc_var_t* ptr_a = NULL;
1138 amxc_var_t* ptr_b = NULL;
1142 amxd_trans_init(&trans);
1143 amxd_trans_set_attr(&trans, amxd_tattr_change_ro,
true);
1145 amxc_var_init(&data_a);
1146 amxc_var_init(&data_b);
1150 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
1151 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1154 assert_int_equal(amxo_parser_start_synchronize(
test_get_parser()), 0);
1156 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
1157 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1161 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
1162 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1164 amxd_trans_select_pathf(&trans,
"B.B_template_sub.");
1165 amxd_trans_add_inst(&trans, 1, NULL);
1166 amxd_trans_set_value(cstring_t, &trans,
"B_sub.text_B",
"Changed text");
1167 amxd_trans_set_value(cstring_t, &trans,
"param_B",
"Changed text");
1168 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
1169 amxd_trans_clean(&trans);
1172 assert_int_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.", 2, &data_a, 5), 0);
1173 assert_int_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.", 2, &data_b, 5), 0);
1174 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.1.A_sub.'.text_A");
1175 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.1.B_sub.'.text_B");
1176 assert_string_equal(GET_CHAR(ptr_a, NULL),
"Changed text");
1177 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
1178 assert_int_equal(ret, 0);
1179 ptr_a = GETP_ARG(&data_a,
"0.'A.A_template_sub.1.'.param_A");
1180 ptr_b = GETP_ARG(&data_b,
"0.'B.B_template_sub.1.'.param_B");
1181 assert_string_equal(GET_CHAR(ptr_a, NULL),
"Changed text");
1182 assert_int_equal(amxc_var_compare(ptr_a, ptr_b, &ret), 0);
1183 assert_int_equal(ret, 0);
1185 amxd_trans_select_pathf(&trans,
"A.A_template_sub.");
1186 amxd_trans_del_inst(&trans, 1, NULL);
1187 assert_int_equal(amxd_trans_apply(&trans,
test_get_dm()), 0);
1188 amxd_trans_clean(&trans);
1191 assert_int_not_equal(amxb_get(
bus_ctx,
"A.A_template_sub.1.A_sub.", 0, &data_a, 5), 0);
1192 assert_int_not_equal(amxb_get(
bus_ctx,
"B.B_template_sub.1.B_sub.", 0, &data_b, 5), 0);
1194 amxc_var_clean(&data_a);
1195 amxc_var_clean(&data_b);
1196 amxd_trans_clean(&trans);
amxs_status_t amxs_sync_ctx_set_local_dm(amxs_sync_ctx_t *ctx, amxd_dm_t *dm_a, amxd_dm_t *dm_b)
Set the local datamodel pointer for the sync root objects.
enum _amxs_sync_direction amxs_sync_direction_t
enum _amxs_status amxs_status_t
amxd_dm_t * amxs_sync_ctx_get_dm(const amxs_sync_ctx_t *ctx, amxs_sync_direction_t direction)
amxo_parser_t * test_get_parser(void)
amxd_dm_t * test_get_dm(void)
int test_unregister_dummy_be(void)
int test_load_dummy_remote(const char *odl)
int test_register_dummy_be(void)
amxs_status_t amxs_sync_object_add_new_copy_param(amxs_sync_object_t *object, const char *param_a, const char *param_b, int attributes)
Creates and adds a synchronization parameter to a synchronization object.
amxs_status_t amxs_sync_object_new_copy(amxs_sync_object_t **object, const char *object_a, const char *object_b, int attributes)
Synchronization object constructor function.
amxs_status_t amxs_sync_object_add_new_param(amxs_sync_object_t *object, const char *param_a, const char *param_b, int attributes, amxs_translation_cb_t translation_cb, amxs_action_cb_t action_cb, void *priv)
Creates and adds a synchronization parameter to a synchronization object.
#define AMXS_SYNC_DEFAULT
Default synchronization attributes.
#define AMXS_SYNC_INIT_B
Take the initial values from object B.
#define AMXS_SYNC_ONLY_B_TO_A
Only synchronize from object B to object A.
#define AMXS_SYNC_ONLY_A_TO_B
Only synchronize from object A to object B.
amxs_status_t amxs_sync_param_copy_trans_cb(const amxs_sync_entry_t *entry, amxs_sync_direction_t direction, const amxc_var_t *input, amxc_var_t *output, void *priv)
Translates data from a dm:object-changed event to data suited for an amxb_set call for a single param...
amxs_status_t amxs_sync_param_copy_action_cb(const amxs_sync_entry_t *entry, amxs_sync_direction_t direction, amxc_var_t *data, void *priv)
Sets the new parameter value.
amxs_status_t amxs_sync_ctx_new(amxs_sync_ctx_t **ctx, const char *object_a, const char *object_b, int attributes)
Synchronization context constructor function.
amxs_status_t amxs_sync_ctx_add_new_param(amxs_sync_ctx_t *ctx, const char *param_a, const char *param_b, int attributes, amxs_translation_cb_t translation_cb, amxs_action_cb_t action_cb, void *priv)
Creates and adds a synchronization parameter to a synchronization context.
amxs_status_t amxs_sync_ctx_start_sync(amxs_sync_ctx_t *ctx)
Starts the object synchronization.
amxs_status_t amxs_sync_ctx_add_new_copy_param(amxs_sync_ctx_t *ctx, const char *param_a, const char *param_b, int attributes)
Creates and adds a synchronization parameter to a synchronization context.
void amxs_sync_ctx_delete(amxs_sync_ctx_t **ctx)
Synchronization context destructor function.
amxs_status_t amxs_sync_ctx_add_object(amxs_sync_ctx_t *ctx, amxs_sync_object_t *object)
Adds a synchronization object to a synchronization context.
void amxs_sync_ctx_stop_sync(amxs_sync_ctx_t *ctx)
Stops the object synchronization.
amxc_llist_t subscriptions
void test_amxs_sync_copy_instance_object(UNUSED void **state)
void test_amxs_sync_copy_template_object(UNUSED void **state)
static bool compare_object_params(amxc_var_t *data_a, amxc_var_t *data_b)
void test_amxs_sync_copy_same_param(UNUSED void **state)
void test_amxs_sync_root_copy_template_object(UNUSED void **state)
void test_amxs_sync_copy_template_sub_object(UNUSED void **state)
void test_amxs_sync_copy_param_read_only(UNUSED void **state)
void test_amxs_sync_copy_template_sub_object_batch_reverse(UNUSED void **state)
void test_amxs_sync_copy_template_sub_object_reverse(UNUSED void **state)
int test_amxs_sync_teardown(UNUSED void **state)
void test_amxs_sync_copy_param(UNUSED void **state)
int test_amxs_sync_setup(UNUSED void **state)
void test_amxs_sync_copy_instances(UNUSED void **state)
static amxb_bus_ctx_t * bus_ctx
void test_amxs_sync_copy_object_batch_check_direction(UNUSED void **state)
static amxs_status_t param_action_cb(const amxs_sync_entry_t *sync_entry, amxs_sync_direction_t direction, amxc_var_t *data, void *priv)
void test_amxs_sync_copy_param_loop_prevention(UNUSED void **state)
void test_amxs_sync_copy_param_loop_prevention_multi_instance(UNUSED void **state)
void test_amxs_sync_copy_object_batch(UNUSED void **state)
void test_amxs_sync_copy_object(UNUSED void **state)
void test_amxs_sync_copy_template_sub_object_with_batch(UNUSED void **state)
static void get_latest_template_data(amxc_var_t *data, amxc_var_t **ptr, uint32_t template_nr, char name)
static void check_parameter(amxc_var_t *data_a, amxc_var_t **ptr_a, char name_a, amxc_var_t *data_b, amxc_var_t **ptr_b, char name_b, uint32_t template_nr, bool ptrs_equal)
static void handle_events(void)