NWiseExtension implements CustomTagExtension<NWiseExtension.NWiseAction> { public List<Map<String, String>> expandTupleIntoTestCases(Set<String> tuple, Map<String, String[]> variableDomains) { List<Map<String, String>> expandedTestCases = new ArrayList<>(); String[] variables = tuple.toArray(new String[tuple.size()]); expandTupleHelper(expandedTestCases, variables, variableDomains, 0, new HashMap<String, String>()); return expandedTestCases; }  Class<NWiseAction> getTagActionClass(); String getTagName(); String getTagNameSpace(); List<Set<String>> makeNWiseTuples(String[] variables, int nWise); List<Map<String, String>> expandTupleIntoTestCases(Set<String> tuple, Map<String, String[]> variableDomains); List<Map<String, String>> produceNWise(int nWise, String[] coVariables, Map<String, String[]> variableDomains); List<Map<String, String>> pipelinePossibleStates(NWiseAction action, List<Map<String, String>> possibleStateList);  }
@Test public void expandTupleIntoTestCasesTest() { NWiseExtension nWiseExtension = new NWiseExtension(); Set<String> tuple = new HashSet<>(); tuple.add("A"); tuple.add("B"); tuple.add("C"); Map<String, String[]> variableDomains = new HashMap<>(); variableDomains.put("A", new String[]{"1", "2", "3", "4"}); variableDomains.put("B", new String[]{"1", "2", "3", "4"}); variableDomains.put("C", new String[]{"1", "2", "3", "4"}); List<Map<String, String>> testCases = nWiseExtension.expandTupleIntoTestCases(tuple, variableDomains); Assert.assertEquals(64, testCases.size()); }