/** * @return next test from test matrix: {varArgs, noVarArgs} x TestCase.rtypes x * TestCase.THROWABLES x {1, .., maxArgs } x {1, .., maxDrops} */ public CatchExceptionTest nextTest() { if (constructor < constructorSize) { return createTest(); } constructor = 0; count++; if (!Helper.IS_THOROUGH && count > Helper.TEST_LIMIT) { System.out.println("test limit is exceeded"); return null; } if (dropArgs <= currentMaxDrops) { if (dropArgs == 1) { if (Helper.IS_THOROUGH || Helper.RNG.nextBoolean()) { ++dropArgs; return createTest(); } else if (Helper.IS_VERBOSE) { System.out.printf("argsCount=%d : \"drop\" scenarios are skipped%n", args); } } else { ++dropArgs; return createTest(); } } if (args <= maxArgs) { dropArgs = 1; currentMaxDrops = Math.min(args, maxDrops); ++args; return createTest(); } return null; }
private CatchExceptionTest createTest() { if (!Helper.IS_THOROUGH) { return new CatchExceptionTest( TestCase.CONSTRUCTORS.get(constructor++).get(), Helper.RNG.nextBoolean(), args, dropArgs); } else { if (isVararg) { isVararg = false; return new CatchExceptionTest( TestCase.CONSTRUCTORS.get(constructor++).get(), isVararg, args, dropArgs); } else { isVararg = true; return new CatchExceptionTest( TestCase.CONSTRUCTORS.get(constructor).get(), isVararg, args, dropArgs); } } }