/* * Copyright (c) 2006 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package mockit.coverage.paths; import java.util.*; import javax.annotation.*; import mockit.coverage.paths.Node.*; final class PathBuilder { private PathBuilder() {} @Nonnull static List<Path> buildPaths(@Nonnull List<Node> nodes) { if (nodes.size() == 1) { return Collections.emptyList(); } Entry entryNode = (Entry) nodes.get(0); Path path = new Path(entryNode); ConditionalSuccessor nextNode = entryNode.nextNode; if (nextNode == null) { nextNode = (ConditionalSuccessor) nodes.get(1); } nextNode.addToPath(path); return getAllPathsFromExitNodes(nodes); } @Nonnull private static List<Path> getAllPathsFromExitNodes(@Nonnull List<Node> nodes) { List<Path> paths = new ArrayList<Path>(); for (Node node : nodes) { if (node instanceof Exit) { paths.addAll(((Exit) node).paths); } } return paths; } }