54 #include <sys/signalfd.h>
68 #include <yajl/yajl_gen.h>
70 #include <amxc/amxc.h>
73 #include <amxj/amxj_variant.h>
80 static int read_data(
const char* file, amxc_var_t** data) {
82 variant_json_t*
reader = NULL;
84 if(amxj_reader_new(&
reader) != 0) {
85 printf(
"Failed to create json file reader");
90 fd = open(file, O_RDONLY);
92 amxj_reader_delete(&
reader);
93 printf(
"File open file %s - error 0x%8.8X", file, errno);
101 *data = amxj_reader_result(
reader);
104 amxj_reader_delete(&
reader);
123 const char* sp1 =
"94:83:c4:06:da:66.[MACAddress == '00:01:02:03:44:f0'].Extender";
124 const char* sp2 =
"['Foundation' in Science-fiction].Author";
125 const char* sp3 =
"*.Awards.*.[year == 1980]";
126 const char* sp4 =
"0.[Age > 50]";
127 const char* sp5 =
"0.[Age > 60]";
128 const char* sp6 =
"0.[Age > 10]";
130 amxc_htable_it_t* it = NULL;
131 amxc_var_t* data = NULL;
132 amxc_htable_t results;
133 amxc_htable_init(&results, 5);
136 assert_int_equal(amxc_htable_size(&results), 1);
137 it = amxc_htable_get(&results,
"'94:83:c4:06:da:66'.0.'Extender'");
139 data = amxc_var_from_htable_it(it);
140 assert_non_null(data);
141 assert_int_equal(amxc_var_type_of(data), AMXC_VAR_ID_BOOL);
142 amxc_htable_clean(&results, variant_htable_it_free);
144 amxc_htable_init(&results, 5);
146 assert_int_equal(amxc_htable_size(&results), 1);
147 it = amxc_htable_get(&results,
"1.'Author'");
149 data = amxc_var_from_htable_it(it);
150 assert_non_null(data);
151 assert_int_equal(amxc_var_type_of(data), AMXC_VAR_ID_CSTRING);
152 amxc_htable_clean(&results, variant_htable_it_free);
154 amxc_htable_init(&results, 5);
156 assert_int_equal(amxc_htable_size(&results), 1);
157 it = amxc_htable_get(&results,
"2.'Awards'.'Hugo'.1");
159 data = amxc_var_from_htable_it(it);
160 assert_non_null(data);
161 assert_int_equal(amxc_var_type_of(data), AMXC_VAR_ID_HTABLE);
162 amxc_htable_clean(&results, variant_htable_it_free);
164 amxc_htable_init(&results, 5);
166 assert_int_equal(amxc_htable_size(&results), 1);
167 it = amxc_htable_get(&results,
"0.'John Doe'");
169 data = amxc_var_from_htable_it(it);
170 assert_non_null(data);
171 assert_int_equal(amxc_var_type_of(data), AMXC_VAR_ID_HTABLE);
172 amxc_htable_clean(&results, variant_htable_it_free);
174 amxc_htable_init(&results, 5);
176 assert_int_equal(amxc_htable_size(&results), 0);
177 amxc_htable_clean(&results, variant_htable_it_free);
179 amxc_htable_init(&results, 5);
181 assert_int_equal(amxc_htable_size(&results), 2);
182 amxc_htable_clean(&results, variant_htable_it_free);
186 const char* sp1 =
"2.'Awards'.'Hugo'.1";
187 amxc_llist_it_t* it = NULL;
188 amxc_string_t*
path = NULL;
189 amxc_llist_t results;
190 amxc_llist_init(&results);
193 assert_int_equal(amxc_llist_size(&results), 1);
194 it = amxc_llist_get_first(&results);
196 path = amxc_string_from_llist_it(it);
197 assert_non_null(
path);
198 assert_string_equal(amxc_string_get(
path, 0), sp1);
199 amxc_llist_clean(&results, amxc_string_list_it_free);
203 const char* sp1 =
"2.'Awards'.'Hugo'.1";
204 const char* sp2 =
"*.Awards.*.[year == 1980]";
205 amxc_var_t* data = NULL;
208 assert_non_null(data);
211 assert_non_null(data);
215 const char* sp1 =
"0.[Age > 10]";
216 amxc_var_t* data = NULL;
223 const char* sp1 =
"0.Age.[Age > 10]";
224 amxc_var_t* data = NULL;
Ambiorix expression parser and evaluate API header file.
int amxp_expr_find_var_values(const amxc_var_t *const var, amxc_htable_t *values, const char *path)
Search matching variant paths in a composite variant.
int amxp_expr_find_var_paths(const amxc_var_t *const var, amxc_llist_t *paths, const char *path)
Search matching variant paths in a composite variant.
amxc_var_t * amxp_expr_find_var(const amxc_var_t *const var, const char *path)
Search a matching variant and returns a pointer to that variant.
static void reader(UNUSED int fd, UNUSED void *priv)
static amxc_string_t path
static amxc_var_t * test_set1
void test_filter_fails_if_on_simple_type(UNUSED void **state)
void test_get_filtered_value_fails_when_multiple_matches_found(UNUSED void **state)
void test_can_filter_values(UNUSED void **state)
int test_var_search_teardown(UNUSED void **state)
void test_can_use_paths(UNUSED void **state)
int test_var_search_setup(UNUSED void **state)
static amxc_var_t * test_set2
void test_can_get_filtered_value(UNUSED void **state)
static int read_data(const char *file, amxc_var_t **data)