From: Dale Weiler <killfieldengine@gmail.com>
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)) ? "<<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);
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