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 int scenarioCountFor(ScenarioDefinition scenarioDefinition) { if (scenarioDefinition instanceof ScenarioOutline) { return ((ScenarioOutline) scenarioDefinition).getExamples().stream().map(examples -> examples.getTableBody().size()).mapToInt(Integer::intValue).sum(); } else { return 1; } }
private int scenarioCountFor(ScenarioDefinition scenarioDefinition) { if (scenarioDefinition instanceof ScenarioOutline) { return ((ScenarioOutline) scenarioDefinition).getExamples().stream().map(examples -> examples.getTableBody().size()).mapToInt(Integer::intValue).sum(); } else { return 1; } }
private BigDecimal scenarioStepCountFor(int backgroundStepCount, ScenarioDefinition scenarioDefinition) { final int stepCount; if (scenarioDefinition instanceof ScenarioOutline) { ScenarioOutline outline = (ScenarioOutline) scenarioDefinition; Integer exampleCount = outline.getExamples().stream().map(examples -> examples.getTableBody().size()).mapToInt(Integer::intValue).sum(); stepCount = exampleCount * (backgroundStepCount + outline.getSteps().size()); } else { stepCount = backgroundStepCount + scenarioDefinition.getSteps().size(); } return BigDecimal.valueOf(stepCount); }
private BigDecimal scenarioStepCountFor(int backgroundStepCount, ScenarioDefinition scenarioDefinition) { final int stepCount; if (scenarioDefinition instanceof ScenarioOutline) { ScenarioOutline outline = (ScenarioOutline) scenarioDefinition; Integer exampleCount = outline.getExamples().stream().map(examples -> examples.getTableBody().size()).mapToInt(Integer::intValue).sum(); stepCount = exampleCount * (backgroundStepCount + outline.getSteps().size()); } else { stepCount = backgroundStepCount + scenarioDefinition.getSteps().size(); } return BigDecimal.valueOf(stepCount); }
private boolean examplesAreNotExcludedByLinesFilter(Examples examples) { if (lineFilters.isEmpty()) { return true; } if (!lineFilters.containsKey(currentFeaturePath())) { return false; } else { return examples.getTableBody().stream().anyMatch( row -> lineFilters.get(currentFeaturePath()).contains((long) row.getLocation().getLine())); } }
private boolean examplesAreNotExcludedByLinesFilter(Examples examples) { if (lineFilters.isEmpty()) { return true; } if (!lineFilters.containsKey(currentFeaturePath())) { return false; } else { return examples.getTableBody().stream().anyMatch( row -> lineFilters.get(currentFeaturePath()).contains((long) row.getLocation().getLine())); } }
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 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<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(); }
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(); } }
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 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(); }
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; }
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; } } }