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
* 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);
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);
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");
+
};
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);
}