int main(void)
{
- int i, j, sum;
+ int i, j, sum, max_iters;
const char *istr, *jstr;
- plan_tests(12);
+ plan_tests(13);
sum = 0;
foreach_int(i, 0, 1, 2, 3, 4)
ok1(sum == 100);
ok1(count_iters() <= 2);
- sum = test_int_recursion(0);
- diag("sum = %i\n", sum);
- diag("iters = %i\n", count_iters());
- ok1(sum == 160);
- ok1(count_iters() <= 2 + 5); /* 5 is max depth of recursion. */
-
sum = 0;
foreach_ptr(istr, "0", "1", "2", "3", "4")
foreach_ptr(jstr, "0", "1", "2", "3", "4")
diag("sum = %i\n", sum);
diag("iters = %i\n", count_iters());
ok1(sum == 100);
- ok1(count_iters() <= 2 + 5 + 2);
+ ok1(count_iters() <= 2 + 2);
/* Same again... reusing iterators. */
sum = 0;
diag("sum = %i\n", sum);
diag("iters = %i\n", count_iters());
ok1(sum == 100);
- ok1(count_iters() <= 2 + 5 + 2);
+ ok1(count_iters() <= 2 + 2);
- sum = test_ptr_recursion("0");
- diag("sum = %i\n", sum);
- diag("iters = %i\n", count_iters());
- ok1(sum == 160);
- ok1(count_iters() <= 2 + 5 + 2);
+ /* Do this twice, second time shouldn't increase iterators. */
+ for (i = 0; i < 2; i++) {
+ sum = test_int_recursion(0);
+ diag("sum = %i\n", sum);
+ diag("iters = %i\n", count_iters());
+ ok1(sum == 160);
+
+ sum = test_ptr_recursion("0");
+ diag("sum = %i\n", sum);
+ diag("iters = %i\n", count_iters());
+ ok1(sum == 160);
+ if (i == 0)
+ max_iters = count_iters();
+ else
+ ok1(count_iters() <= max_iters);
+ }
return exit_status();
}