@DataProvider(name = "OutputProvider") public Object[][] OutputProvider() { ObjectArrayList<Object[]> tests = new ObjectArrayList<Object[]>(); final ATDTestCommandLineProgram clp = new ATDTestCommandLineProgram(); for ( final Object obj : Arrays.asList(clp.new OutputRequiredSamArgumentSource(), clp.new OutputRequiredVcfArgumentSource(), clp.new OutputRequiredStreamArgumentSource()) ) { for ( final boolean provided : Arrays.asList(true, false) ) { tests.add(new Object[]{obj, true, true, provided}); } } for ( final Object obj : Arrays.asList(clp.new OutputNotRequiredSamArgumentSource(), clp.new OutputNotRequiredVcfArgumentSource(), clp.new OutputNotRequiredStreamArgumentSource()) ) { for ( final boolean provided : Arrays.asList(true, false) ) { tests.add(new Object[]{obj, false, true, provided}); } } for ( final Object obj : Arrays.asList(clp.new OutputNotRequiredNoDefaultSamArgumentSource(), clp.new OutputNotRequiredNoDefaultVcfArgumentSource(), clp.new OutputNotRequiredNoDefaultStreamArgumentSource()) ) { for ( final boolean provided : Arrays.asList(true, false) ) { tests.add(new Object[]{obj, false, false, provided}); } } return tests.toArray(new Object[][]{}); }