END_TEST START_TEST(test_eval_resource_list_error) { peos_resource_t* resources; fail_unless(eval_resource_list(&resources, 1) == 0, "eval_resource_list_error failed"); resources = (peos_resource_t*)calloc(1, sizeof(peos_resource_t)); strcpy(resources[0].name, "res0"); fail_unless(eval_resource_list(&resources, 1) == 1, "eval_resource_list_error failed"); fail_unless(eval_resource_list(&resources, 0) == 0, "eval_resource_list_error failed"); strcpy(resources[0].name, ""); fail_unless(eval_resource_list(&resources, 1) == 0, "eval_resource_list_error failed"); }
END_TEST START_TEST(test_eval_resource_list_unbound) { peos_resource_t* resources = (peos_resource_t *) calloc(3, sizeof(peos_resource_t)); strcpy(resources[0].name, "unbound"); //res0 is unbound strcpy(resources[1].name, "res1"); strcpy(resources[1].value, "$unbound/val1"); strcpy(resources[2].name, "res2"); strcpy(resources[2].value, "${res1}/val2"); fail_unless(eval_resource_list(&resources, 3) == 1, "eval_resource_list_unbound 1 failed"); fail_unless(strcmp(resources[0].value, "{}") == 0, "eval_resource_list_unbound 2 failed"); fail_unless(strcmp(resources[1].value, "/val1") == 0, "eval_resource_list_unbound 3 failed"); fail_unless(strcmp(resources[2].value, "/val1/val2") == 0, "eval_resource_list_unbound 4 failed"); free(resources); }
int is_provides_true(Node n) { int i; int num_resources = 0; peos_resource_t* resources; peos_resource_t* proc_resources; peos_context_t* context = peos_get_context(PID(n)); resources = get_resource_list_action_provides(PID(n), n->name, &num_resources); if (context && context->num_resources > 0) { proc_resources = (peos_resource_t *) calloc(context->num_resources, sizeof(peos_resource_t)); for (i = 0; i < context->num_resources; i++) { strcpy(proc_resources[i].name, context->resources[i].name); strcpy(proc_resources[i].value, context->resources[i].value); } eval_resource_list(&proc_resources, context->num_resources); fill_resource_list_value(proc_resources, context->num_resources, &resources, num_resources); } return eval_predicate(resources, num_resources, n->provides); }
END_TEST START_TEST(test_eval_resource_list_bound) { peos_resource_t* resources = (peos_resource_t*)calloc(3, sizeof(peos_resource_t)); strcpy(resources[0].name, "res0"); strcpy(resources[0].value, "val0"); strcpy(resources[1].name, "res1"); strcpy(resources[1].value, "$res0/val1"); strcpy(resources[2].name, "res2"); strcpy(resources[2].value, "${res1}/val2"); fail_unless(eval_resource_list(&resources, 3) == 1, "eval_resource_list_bound failed"); fail_unless(strcmp(resources[0].value, "val0") == 0, "eval_resource_list_bound failed"); fail_unless(strcmp(resources[1].value, "val0/val1") == 0, "eval_resource_list_bound failed"); fail_unless(strcmp(resources[2].value, "val0/val1/val2") == 0, "eval_resource_list_bound failed"); free(resources); }