Fix testsuite. Also added an additional test to the ternary stuff

This commit is contained in:
Dale Weiler 2012-12-16 22:07:33 +00:00
parent c198c23df1
commit 60807b677c
5 changed files with 66 additions and 29 deletions

28
test.c
View file

@ -860,8 +860,12 @@ bool task_execute(task_template_t *template, char ***line) {
if (strrchr(data, '\n'))
*strrchr(data, '\n') = '\0';
if (strcmp(data, template->comparematch[compare++]))
success = false;
if (vec_size(template->comparematch) > compare) {
if (strcmp(data, template->comparematch[compare++]))
success = false;
} else {
success = false;
}
/*
* Copy to output vector for diagnostics if execution match
@ -980,7 +984,10 @@ void task_schedualize() {
* handler for the all the given matches in the template file and
* what was actually returned from executing.
*/
con_err(" Expected From %u Matches:\n", vec_size(task_tasks[i].template->comparematch));
con_err(" Expected From %u Matches: (got %u Matches)\n",
vec_size(task_tasks[i].template->comparematch),
vec_size(match)
);
for (; d < vec_size(task_tasks[i].template->comparematch); d++) {
char *select = task_tasks[i].template->comparematch[d];
size_t length = 40 - strlen(select);
@ -990,6 +997,21 @@ void task_schedualize() {
con_err(" ");
con_err("| Got: \"%s\"\n", (d >= vec_size(match)) ? "<<nothing else to compare>>" : match[d]);
}
/*
* Print the non-expected out (since we are simply not expecting it)
* This will help track down bugs in template files that fail to match
* something.
*/
if (vec_size(match) > vec_size(task_tasks[i].template->comparematch)) {
for (d = 0; d < vec_size(match) - vec_size(task_tasks[i].template->comparematch); d++) {
con_err(" Expected: Nothing | Got: \"%s\"\n",
match[d + vec_size(task_tasks[i].template->comparematch)]
);
}
}
for (j = 0; j < vec_size(match); j++)
mem_d(match[j]);
vec_free(match);

View file

@ -11,4 +11,5 @@ void(float a, float b, float c) main = {
sum(sum(sum(a, b, c), b, sum(a, b, c)), b, sum(a, b, sum(a, b, c))),
sum(sum(a, b, c), b, c));
print(ftos(f), "\n");
};

View file

@ -11,3 +11,5 @@ M: 0
M: 5
M: 9
M: 10
M: select_a: 1
M: select_b: 0

View file

@ -2,35 +2,45 @@ void print(...) = #1;
string ftos (float) = #2;
void test(float cond, float v1, float v2, float a) {
print(ftos(cond ? v1 : v2), " ");
print( (cond ? v1 : v2) ? ( (a == 1) ? "a=1"
: (a == 2) ? "a=2"
: "a=other"
)
: "not met",
"\n");
print(ftos(cond ? v1 : v2), " ");
print( (cond ? v1 : v2) ? ( (a == 1) ? "a=1"
: (a == 2) ? "a=2"
: "a=other"
)
: "not met",
"\n");
}
void select_a(float x) {
print("select_a: ", ftos(x), "\n");
}
void select_b(float x) {
print("select_b: ", ftos(x), "\n");
}
void main() {
float a, b;
test(0, -99, 1, 1);
test(0, -99, 1, 2);
test(0, -99, 1, 3);
test(0, -99, 0, 1);
test(0, -99, 0, 2);
test(0, -99, 0, 3);
test(1, 1, -99, 1);
test(1, 1, -99, 2);
test(1, 1, -99, 3);
test(1, 0, -99, 1);
test(1, 0, -99, 2);
test(1, 0, -99, 3);
test(0, -99, 1, 1);
test(0, -99, 1, 2);
test(0, -99, 1, 3);
test(0, -99, 0, 1);
test(0, -99, 0, 2);
test(0, -99, 0, 3);
test(1, 1, -99, 1);
test(1, 1, -99, 2);
test(1, 1, -99, 3);
test(1, 0, -99, 1);
test(1, 0, -99, 2);
test(1, 0, -99, 3);
b = 5;
a = b ? 5 : 6;
print(ftos(a), "\n");
b ? a = 9 : a = 10;
print(ftos(a), "\n");
!b ? a = 9 : a = 10;
print(ftos(a), "\n");
b = 5;
a = b ? 5 : 6;
print(ftos(a), "\n");
b ? a = 9 : a = 10;
print(ftos(a), "\n");
!b ? a = 9 : a = 10;
print(ftos(a), "\n");
((1) ? select_a : select_b) (1);
((0) ? select_a : select_b) (0);
}

View file

@ -17,3 +17,5 @@ M: 0 not met
M: 5
M: 9
M: 10
M: select_a: 1
M: select_b: 0