private void indexRequirements() { requirementAncestors = Maps.newHashMap(); for (Requirement requirement : requirements) { List<Requirement> requirementPath = ImmutableList.of(requirement); requirementAncestors.put(requirement, ImmutableList.of(requirement)); LOGGER.info("Requirement ancestors for:" + requirement + " = " + requirementPath); indexChildRequirements(requirementPath, requirement.getChildren()); } }
private void indexChildRequirements(List<Requirement> ancestors, List<Requirement> children) { for (Requirement requirement : children) { List<Requirement> requirementPath = newArrayList(ancestors); requirementPath.add(requirement); requirementAncestors.put(requirement, ImmutableList.copyOf(requirementPath)); LOGGER.info("Requirement ancestors for:" + requirement + " = " + requirementPath); indexChildRequirements(requirementPath, requirement.getChildren()); } }
private void addFlattenedRequirements(Requirement requirement, List<Requirement> allRequirements) { allRequirements.add(requirement); for (Requirement child : requirement.getChildren()) { addFlattenedRequirements(child, allRequirements); } }
protected static Collection<Requirement> childRequirementsOf(Requirement requirement) { List<Requirement> childRequirements = new ArrayList<>(); for (Requirement childRequirement : requirement.getChildren()) { childRequirements.add(childRequirement); childRequirements.addAll(childRequirementsOf(childRequirement)); } return childRequirements; } }
private void indexChildRequirements(List<Requirement> ancestors, List<Requirement> children) { for (Requirement requirement : children) { List<Requirement> requirementPath = newArrayList(ancestors); requirementPath.add(requirement); requirementAncestors.put(requirement, ImmutableList.copyOf(requirementPath)); LOGGER.info("Requirement ancestors for:" + requirement + " = " + requirementPath); indexChildRequirements(requirementPath, requirement.getChildren()); } }
private Collection<Requirement> childRequirementsOf(Requirement requirement) { List<Requirement> childRequirements = Lists.newArrayList(); for (Requirement childRequirement : requirement.getChildren()) { childRequirements.add(childRequirement); childRequirements.addAll(childRequirementsOf(childRequirement)); } return childRequirements; }
private List<List<String>> getReleaseVersionsFrom(List<Requirement> requirements) { List<List<String>> releaseVersions = newArrayList(); for (Requirement requirement : requirements) { releaseVersions.add(requirement.getReleaseVersions()); releaseVersions.addAll(getReleaseVersionsFrom(requirement.getChildren())); } return releaseVersions; }
private String typeOfFirstChildPresent() { for (RequirementOutcome outcome : requirementOutcomes) { if (!outcome.getRequirement().getChildren().isEmpty()) { Requirement firstChildRequirement = outcome.getRequirement().getChildren().get(0); return firstChildRequirement.getType(); } } return null; }
private void indexChildRequirements(List<Requirement> ancestors, List<Requirement> children) { for (Requirement requirement : children) { List<Requirement> requirementPath = new ArrayList(ancestors); requirementPath.add(requirement); requirementAncestors.put(requirement, NewList.copyOf(requirementPath)); indexChildRequirements(requirementPath, requirement.getChildren()); } }
public String toString() { ByteArrayOutputStream printedRequirement = new ByteArrayOutputStream(); PrintStream printStream = new PrintStream(printedRequirement); printStream.println(indent + "- " + requirement.getType() + ": " + requirement.getDisplayName()); for(Requirement child : requirement.getChildren()) { printStream.print(stringFormOf(child).withIndentationLevel(level + 1)); } return printedRequirement.toString(); } }
public Optional<Requirement> getParentRequirementOf(Requirement requirement) { for (Requirement candidateParent : RequirementsList.of(getRequirements()).asFlattenedList()) { if (candidateParent.getChildren().contains(requirement)) { return Optional.of(candidateParent); } } return Optional.empty(); }
private List<Requirement> removeRequirementsWithoutTestsFrom(List<Requirement> requirements) { List<Requirement> prunedRequirements = Lists.newArrayList(); for(Requirement requirement : requirements) { if (testsExistFor(requirement)) { List<Requirement> prunedChildren = removeRequirementsWithoutTestsFrom(requirement.getChildren()); prunedRequirements.add(requirement.withChildren(prunedChildren)); } } return ImmutableList.copyOf(prunedRequirements); }
private List<Requirement> addParentsTo(List<Requirement> requirements, String parent) { List<Requirement> augmentedRequirements = Lists.newArrayList(); for (Requirement requirement : requirements) { List<Requirement> children = requirement.hasChildren() ? addParentsTo(requirement.getChildren(), requirement.getName()) : NO_REQUIREMENTS; augmentedRequirements.add(requirement.withParent(parent).withChildren(children)); } return augmentedRequirements; }
protected List<Requirement> addParentsTo(List<Requirement> requirements, String parent) { List<Requirement> augmentedRequirements = new ArrayList<>(); for(Requirement requirement : requirements) { List<Requirement> children = requirement.hasChildren() ? addParentsTo(requirement.getChildren(),requirement.getName()) : NO_REQUIREMENTS; augmentedRequirements.add(requirement.withParent(parent).withChildren(children)); } return augmentedRequirements; }
private Node toNode(Requirement requirement,RequirementsOutcomes requirementsOutcomes) { List<Node> children = requirement.getChildren().stream() .map(child -> toNode(child, requirementsOutcomes)) .distinct() .collect(Collectors.toList()); TestResult result = matchingOutcome(requirement, requirementsOutcomes); String label = new ResultIconFormatter().forResult(result); String childCount = (children.isEmpty()) ? countScenariosIn(requirement, requirementsOutcomes) : countChildRequirementsIn(requirement); String report = new ReportNameProvider().forRequirement(requirement); return new Node(requirement.getName(), requirement.getType(), report, label, childCount, children); }
private boolean anyChildRequirementsAreFailuresFor(List<Requirement> requirements) { for(Requirement childRequirement : requirements) { RequirementOutcome childOutcomes = new RequirementOutcome(childRequirement, testOutcomes.forRequirement(requirement), issueTracking); if (childOutcomes.isFailure()) { return true; } else if (anyChildRequirementsAreFailuresFor(childRequirement.getChildren())) { return true; } } return false; }
private boolean anyChildRequirementsAreErrorsFor(List<Requirement> requirements) { for(Requirement childRequirement : requirements) { RequirementOutcome childOutcomes = new RequirementOutcome(childRequirement, testOutcomes.forRequirement(requirement), issueTracking); if (childOutcomes.isError()) { return true; } else if (anyChildRequirementsAreErrorsFor(childRequirement.getChildren())) { return true; } } return false; }
private boolean anyChildRequirementsAreIgnoredFor(List<Requirement> requirements) { for(Requirement childRequirement : requirements) { RequirementOutcome childOutcomes = new RequirementOutcome(childRequirement, testOutcomes.forRequirement(requirement), issueTracking); if (childOutcomes.isIgnored()) { return true; } else if (anyChildRequirementsAreIgnoredFor(childRequirement.getChildren())) { return true; } } return false; }
private boolean anyChildRequirementsAreErrorsFor(List<Requirement> requirements) { for(Requirement childRequirement : requirements) { RequirementOutcome childOutcomes = new RequirementOutcome(childRequirement, testOutcomes.forRequirement(requirement), issueTracking); if (childOutcomes.isError()) { return true; } else if (anyChildRequirementsAreErrorsFor(childRequirement.getChildren())) { return true; } } return false; } private boolean anyChildRequirementsAreFailuresFor(List<Requirement> requirements) {
private boolean anyChildRequirementsArePendingFor(List<Requirement> requirements) { for(Requirement childRequirement : requirements) { RequirementOutcome childOutcomes = new RequirementOutcome(childRequirement, testOutcomes.forRequirement(requirement), issueTracking); if (childOutcomes.isPending()) { return true; } else if (anyChildRequirementsArePendingFor(childRequirement.getChildren())) { return true; } } return false; }