+ TESTGROUP("loop-between") {
+ MC_LOOPBETWEEN(x, i = 0, i < 5, i++) STEP(2*i);
+ else STEP(2*i - 1);
+ STEP(9);
+ }
+
+ TESTGROUP("loop-between-continue-break") {
+ MC_LOOPBETWEEN(x, i = 0, i < 5, i++) {
+ if (i == 1) { STEP(2); continue; }
+ STEP(2*i);
+ if (i == 3) break;
+ } else
+ STEP(2*i - 1);
+ STEP(7);
+ }
+
+#define WRAPELSE_TEST \
+ MC_TARGET(done_plain, { STEP(4); MC_GOELSE(elsie); }) \
+ MC_WRAP(outer_wrap, { STEP(0); }, \
+ { STEP(6); }, \
+ { MISSTEP; }) \
+ MC_ALLOWELSE(elsie) \
+ MC_WRAP(inner_wrap, { STEP(1); }, \
+ { STEP(3); MC_GOTARGET(done_plain); }, \
+ { MISSTEP; })
+
+ TESTGROUP("wrap-else") {
+ WRAPELSE_TEST STEP(2);
+ else STEP(5);
+ STEP(7);
+ }
+
+#undef WRAPELSE_TEST
+
+ TESTGROUP("decl") {
+#if __STDC_VERSION__ >= 199901 || defined(__cplusplus)
+ STEP(0);
+ MC_DECL(decl0, int j = 1) STEP(j);
+ STEP(2);
+#else
+ tvec_skipgroup(&tvstate, "`MC_DECL' not supported on C89");
+#endif
+ }
+
+#define FIZZBUZZ_DECLS(var) \
+ int _i, _limit; \
+ char _buf[24]; \
+ const char *var