private Map<String, Object> createExamples(Examples examples) { Map<String, Object> examplesMap = new HashMap<String, Object>(); examplesMap.put("name", examples.getName()); examplesMap.put("keyword", examples.getKeyword()); examplesMap.put("description", examples.getDescription() != null ? examples.getDescription() : ""); List<Map<String, Object>> rowList = new ArrayList<Map<String, Object>>(); rowList.add(createRowMap(examples.getTableHeader())); for (TableRow row : examples.getTableBody()) { rowList.add(createRowMap(row)); } examplesMap.put("rows", rowList); if (!examples.getTags().isEmpty()) { examplesMap.put("tags", createTagList(examples.getTags())); } return examplesMap; }
private void processScenarioOutlineExamples(Map<Integer, AstNode> nodeMap, ScenarioOutline scenarioOutline, AstNode childNode) { for (Examples examples : scenarioOutline.getExamples()) { AstNode examplesNode = new AstNode(examples, childNode); TableRow headerRow = examples.getTableHeader(); AstNode headerNode = new AstNode(headerRow, examplesNode); nodeMap.put(headerRow.getLocation().getLine(), headerNode); for (int i = 0; i < examples.getTableBody().size(); ++i) { TableRow examplesRow = examples.getTableBody().get(i); Node rowNode = new ExamplesRowWrapperNode(examplesRow, i); AstNode expandedScenarioNode = new AstNode(rowNode, examplesNode); nodeMap.put(examplesRow.getLocation().getLine(), expandedScenarioNode); } } }
private static Map<Integer, Integer> maxColumnWidthForColumnsIn(Examples exampleTable) { Map<Integer, Integer> maxColumnWidth = new HashMap<>(); int columnCount = exampleTable.getTableHeader().getCells().size(); for(int column = 0; column < columnCount; column++) { maxColumnWidth.put(column, maxColumnWidthFor(exampleTable, column)); } return maxColumnWidth; }
private static Integer maxColumnWidthFor(Examples exampleTable, int column) { int headerWidth = exampleTable.getTableHeader().getCells().get(column).getValue().length(); int maxCellWidth = exampleTable.getTableBody() .stream() .mapToInt(row -> row.getCells().get(column).getValue().length()) .max() .orElse(0); return Math.max(headerWidth, maxCellWidth); } }
private List<Parameter> getExamplesAsParameters(final ScenarioOutline scenarioOutline) { final Examples examples = scenarioOutline.getExamples().get(0); final TableRow row = examples.getTableBody().stream() .filter(example -> example.getLocation().getLine() == currentTestCase.getLine()) .findFirst().get(); return IntStream.range(0, examples.getTableHeader().getCells().size()).mapToObj(index -> { final String name = examples.getTableHeader().getCells().get(index).getValue(); final String value = row.getCells().get(index).getValue(); return new Parameter().setName(name).setValue(value); }).collect(Collectors.toList()); }
private static String renderedExamples(Examples examples) { StringBuffer renderedTable = new StringBuffer(); renderedTable.append(examples.getKeyword()).append(": "); if (examples.getName() != null) { renderedTable.append(examples.getName()); } renderedTable.append(" ").append(System.lineSeparator()); if (examples.getDescription() != null) { renderedTable.append(examples.getDescription()).append(" ").append(System.lineSeparator()); } renderedTable.append(System.lineSeparator()); addRow(renderedTable, examples.getTableHeader().getCells(), null); addSeparatorCells(renderedTable, examples.getTableHeader().getCells().size()); for(TableRow row : examples.getTableBody()) { addRow(renderedTable, row.getCells(),null); } return renderedTable.toString(); }
/** * Converts a Gherkin example table to a map of columns (keys) and rows (values) * * @param exampleTable a Gherkin {@link Examples} instance. * @return a map where the keys are the column headers and the values are lists of strings. */ Map<String, List<String>> convertGherkinExampleTableToCucableExampleMap( final Examples exampleTable ) { Map<String, List<String>> exampleMap = new LinkedHashMap<>(); List<TableCell> headerCells = exampleTable.getTableHeader().getCells(); for (TableCell headerCell : headerCells) { exampleMap.put("<" + headerCell.getValue() + ">", new ArrayList<>()); } Object[] columnKeys = exampleMap.keySet().toArray(); List<TableRow> tableBody = exampleTable.getTableBody(); for (TableRow tableRow : tableBody) { List<TableCell> cells = tableRow.getCells(); for (int i = 0; i < cells.size(); i++) { String columnKey = (String) columnKeys[i]; List<String> values = exampleMap.get(columnKey); values.add(cells.get(i).getValue()); } } return exampleMap; } }
private List<Parameter> getExamplesAsParameters(final ScenarioOutline scenarioOutline) { final Optional<Examples> examplesBlock = scenarioOutline.getExamples().stream() .filter(example -> example.getTableBody().stream() .anyMatch(row -> row.getLocation().getLine() == currentTestCase.getLine()) ).findFirst(); if (examplesBlock.isPresent()) { final TableRow row = examplesBlock.get().getTableBody().stream() .filter(example -> example.getLocation().getLine() == currentTestCase.getLine()) .findFirst().get(); return IntStream.range(0, examplesBlock.get().getTableHeader().getCells().size()).mapToObj(index -> { final String name = examplesBlock.get().getTableHeader().getCells().get(index).getValue(); final String value = row.getCells().get(index).getValue(); return new Parameter().setName(name).setValue(value); }).collect(Collectors.toList()); } else { return Collections.emptyList(); } }
private static String renderedExamples(Examples examples, String featureName, String scenarioName, int exampleTableNumber) { ExampleRowResultIcon exampleRowResultIcon = new ExampleRowResultIcon(featureName, scenarioName, exampleTableNumber); StringBuffer renderedTable = new StringBuffer(); renderedTable.append(examples.getKeyword()).append(": "); if (examples.getName() != null) { renderedTable.append(examples.getName()); } renderedTable.append(" ").append(System.lineSeparator()); if (examples.getDescription() != null) { renderedTable.append(examples.getDescription()).append(" ").append(System.lineSeparator()); } renderedTable.append(System.lineSeparator()); addRow(renderedTable, examples.getTableHeader().getCells()," "); addSeparatorCells(renderedTable, examples.getTableHeader().getCells().size()); for(TableRow row : examples.getTableBody()) { addRow(renderedTable, row.getCells(), exampleRowResultIcon.resultToken()); } return renderedTable.toString(); }
public static String renderedTable(Examples exampleTable, ExampleRowResultIcon exampleRowIcon) { final Map<Integer,Integer> maxColumnWidths = maxColumnWidthForColumnsIn(exampleTable); String headings = cellRow(exampleTable.getTableHeader().getCells(), maxColumnWidths, exampleRowIcon.noIcon()) + headerSeparator(maxColumnWidths); String body = exampleTable.getTableBody().stream() .map(row -> cellRow(row.getCells(), maxColumnWidths, exampleRowIcon)) .collect(Collectors.joining()); return headings + body; }
private void processScenarioOutlineExamples( final Map<Integer, AstNode> nodeMap, final ScenarioOutline scenarioOutline, final AstNode childNode ) { scenarioOutline.getExamples().forEach(examples -> { final AstNode examplesNode = new AstNode(examples, childNode); final TableRow headerRow = examples.getTableHeader(); final AstNode headerNode = new AstNode(headerRow, examplesNode); nodeMap.put(headerRow.getLocation().getLine(), headerNode); IntStream.range(0, examples.getTableBody().size()).forEach(i -> { final TableRow examplesRow = examples.getTableBody().get(i); final Node rowNode = new CucumberSourceUtils.ExamplesRowWrapperNode(examplesRow, i); final AstNode expandedScenarioNode = new AstNode(rowNode, examplesNode); nodeMap.put(examplesRow.getLocation().getLine(), expandedScenarioNode); }); }); }
private void processScenarioOutlineExamples( final Map<Integer, AstNode> nodeMap, final ScenarioOutline scenarioOutline, final AstNode childNode ) { scenarioOutline.getExamples().forEach(examples -> { final AstNode examplesNode = new AstNode(examples, childNode); final TableRow headerRow = examples.getTableHeader(); final AstNode headerNode = new AstNode(headerRow, examplesNode); nodeMap.put(headerRow.getLocation().getLine(), headerNode); IntStream.range(0, examples.getTableBody().size()).forEach(i -> { final TableRow examplesRow = examples.getTableBody().get(i); final Node rowNode = new CucumberSourceUtils.ExamplesRowWrapperNode(examplesRow, i); final AstNode expandedScenarioNode = new AstNode(rowNode, examplesNode); nodeMap.put(examplesRow.getLocation().getLine(), expandedScenarioNode); }); }); }
private List<ScenarioDefinition> scenarios(Feature feature) { List<ScenarioDefinition> result = new ArrayList<>(); for (ScenarioDefinition scenario : feature.getChildren()) { if (isScenarioNormal(scenario)) { result.add(scenario); } else if (isScenarioOutline(scenario)) { ScenarioOutline scenarioOutline = (ScenarioOutline) scenario; for (Examples examples : scenarioOutline.getExamples()) { for (TableRow row : examples.getTableBody()) { result.add(concreteScenario(scenarioOutline, parametersMap(examples.getTableHeader(), row))); } } } } return result; }
private List<Examples> replaceExamplesPlaceholders(List<Examples> examples) throws DataException { List<Examples> resultExamples = new ArrayList<>(); for (Examples example : examples) { Examples resultExample = new Examples( example.getLocation(), example.getTags(), example.getKeyword(), example.getName(), example.getDescription(), example.getTableHeader(), replaceTableRows(example.getTableBody())); resultExamples.add(resultExample); } return resultExamples; }
private List<Examples> replaceExamplesPlaceholders(List<Examples> examples) throws DataException { List<Examples> resultExamples = new ArrayList<>(); for (Examples example : examples) { Examples resultExample = new Examples( example.getLocation(), example.getTags(), example.getKeyword(), example.getName(), example.getDescription(), example.getTableHeader(), replaceTableRows(example.getTableBody())); resultExamples.add(resultExample); } return resultExamples; }
if (examples.getTableHeader() == null) continue; List<TableCell> variableCells = examples.getTableHeader().getCells(); for (final TableRow values : examples.getTableBody()) { List<TableCell> valueCells = values.getCells();
private void examples(Feature currentFeature, List<Tag> scenarioOutlineTags, String id, List<Examples> examplesList) { String featureName = currentFeature.getName(); List<Tag> currentFeatureTags = currentFeature.getTags(); addingScenarioOutlineSteps = false; initializeExamples(); for (Examples examples : examplesList) { if (examplesAreNotExcludedByTags(examples, scenarioOutlineTags, currentFeatureTags) && examplesAreNotExcludedByLinesFilter(examples)) { List<TableRow> examplesTableRows = examples.getTableBody().stream().filter( tableRow -> tableRowIsNotExcludedByLinesFilter(tableRow)).collect(Collectors.toList()); List<String> headers = getHeadersFrom(examples.getTableHeader()); List<Map<String, String>> rows = getValuesFrom(examplesTableRows, headers); for (int i = 0; i < examplesTableRows.size(); i++) { addRow(exampleRows(), headers, examplesTableRows.get(i)); if (examples.getTags() != null) { exampleTags().put(examplesTableRows.get(i).getLocation().getLine(), examples.getTags()); } } String scenarioId = scenarioIdFrom(featureName, id); boolean newScenario = !scenarioId.equals(currentScenarioId); table = (newScenario) ? thucydidesTableFrom(SCENARIO_OUTLINE_NOT_KNOWN_YET, headers, rows, trim(examples.getName()), trim(examples.getDescription())) : addTableRowsTo(table, headers, rows, trim(examples.getName()), trim(examples.getDescription())); table.addTagsToLatestDataSet(examples.getTags().stream().map(tag -> TestTag.withValue(tag.getName().substring(1))).collect(Collectors.toList())); exampleCount = table.getSize(); currentScenarioId = scenarioId; } } }
private void examples(Feature currentFeature, List<Tag> scenarioOutlineTags, String id, List<Examples> examplesList) { String featureName = currentFeature.getName(); List<Tag> currentFeatureTags = currentFeature.getTags(); addingScenarioOutlineSteps = false; initializeExamples(); for (Examples examples : examplesList) { if (examplesAreNotExcludedByTags(examples, scenarioOutlineTags, currentFeatureTags) && examplesAreNotExcludedByLinesFilter(examples)) { List<TableRow> examplesTableRows = examples.getTableBody().stream().filter( tableRow -> tableRowIsNotExcludedByLinesFilter(tableRow)).collect(Collectors.toList()); List<String> headers = getHeadersFrom(examples.getTableHeader()); List<Map<String, String>> rows = getValuesFrom(examplesTableRows, headers); for (int i = 0; i < examplesTableRows.size(); i++) { addRow(exampleRows(), headers, examplesTableRows.get(i)); if (examples.getTags() != null) { exampleTags().put(examplesTableRows.get(i).getLocation().getLine(), examples.getTags()); } } String scenarioId = scenarioIdFrom(featureName, id); boolean newScenario = !scenarioId.equals(currentScenarioId); table = (newScenario) ? thucydidesTableFrom(SCENARIO_OUTLINE_NOT_KNOWN_YET, headers, rows, trim(examples.getName()), trim(examples.getDescription())) : addTableRowsTo(table, headers, rows, trim(examples.getName()), trim(examples.getDescription())); table.addTagsToLatestDataSet(examples.getTags().stream().map(tag -> TestTag.withValue(tag.getName().substring(1))).collect(Collectors.toList())); exampleCount = table.getSize(); currentScenarioId = scenarioId; } } }