#undef NDEBUG
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <errno.h>
#include "ncnf.h"
#include "ncnf_app.h"
int filter(ncnf_obj *, void *);
int
main(int ac, char **av) {
ncnf_obj *root;
ncnf_obj *iter;
ncnf_obj *obj;
int count;
printf("%s\n", av[0]);
ncnf_destroy(ncnf_read("ncnf_test.conf"));
root = ncnf_read("ncnf_test.conf");
if(root == NULL) {
perror("Failed to read first configuration file");
return 1;
}
printf("nothing:\n");
iter = NCNF_APP_find_objects(root, "", NULL, NULL);
assert(iter == NULL && errno == EINVAL);
iter = NCNF_APP_find_objects(root, "nothing", NULL, NULL);
assert(iter == NULL && errno == ESRCH);
printf("\nservice/properties:\n");
iter = NCNF_APP_find_objects(root, "service/properties", NULL, NULL);
assert(iter);
for(count = 0; (obj = ncnf_iter_next(iter)); count++) {
printf("%s \"%s\"\n",
ncnf_obj_type(obj),
ncnf_obj_name(obj)
);
}
assert(count == 2);
ncnf_destroy(iter);
printf("\nnloc/ploc/box/process/si:\n");
iter = NCNF_APP_find_objects(root, "nloc/ploc/box/process/si",
filter, NULL);
assert(iter);
for(count = 0; (obj = ncnf_iter_next(iter)); count++) {
printf("%s \"%s\"\n",
ncnf_obj_type(obj),
ncnf_obj_name(obj)
);
}
assert(count == 19);
ncnf_destroy(iter);
ncnf_destroy(root);
return 0;
}
int
filter(ncnf_obj *obj, void *key) {
(void)key;
printf("\tfilter(%s \"%s\")\n",
ncnf_obj_type(obj),
ncnf_obj_name(obj)
);
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1