From: Dale Weiler Date: Sun, 16 Dec 2012 22:07:33 +0000 (+0000) Subject: Fix testsuite. Also added an additional test to the ternary stuff X-Git-Tag: 0.1.9~97 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=60807b677cecb414b501503d73b50714534ff3b0;p=xonotic%2Fgmqcc.git Fix testsuite. Also added an additional test to the ternary stuff --- diff --git a/test.c b/test.c index 54fb2aa..9694161 100644 --- a/test.c +++ b/test.c @@ -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)) ? "<>" : 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); diff --git a/tests/calls.qc b/tests/calls.qc index d55598e..e230dc4 100644 --- a/tests/calls.qc +++ b/tests/calls.qc @@ -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"); + }; diff --git a/tests/ternary-fte.tmpl b/tests/ternary-fte.tmpl index 5a21eb2..3d4bdcb 100644 --- a/tests/ternary-fte.tmpl +++ b/tests/ternary-fte.tmpl @@ -11,3 +11,5 @@ M: 0 M: 5 M: 9 M: 10 +M: select_a: 1 +M: select_b: 0 diff --git a/tests/ternary.qc b/tests/ternary.qc index a8e0bd7..242a240 100644 --- a/tests/ternary.qc +++ b/tests/ternary.qc @@ -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); } diff --git a/tests/ternary.tmpl b/tests/ternary.tmpl index cd8f330..ae88aaa 100644 --- a/tests/ternary.tmpl +++ b/tests/ternary.tmpl @@ -17,3 +17,5 @@ M: 0 not met M: 5 M: 9 M: 10 +M: select_a: 1 +M: select_b: 0