Java源码示例:org.jgrapht.graph.DirectedPseudograph

示例1
private Graph<Integer, DefaultEdge> createGraph() {
    Class<? extends DefaultEdge> edgeClass =
            model.weighted() ? DefaultWeightedEdge.class : DefaultEdge.class;

    if (model.loops()) {
        if (model.multiGraph() == false) {
            throw new IllegalArgumentException("Self-loops are only supported " +
                    "with multi-graphs");
        }
        if (isDirected()) {
            if (model.weighted()) {
                return new DirectedWeightedPseudograph<>(edgeClass);
            } else {
                return new DirectedPseudograph<>(edgeClass);
            }
        } else {
            if (model.weighted()) {
                return new WeightedPseudograph<>(edgeClass);
            } else {
                return new Pseudograph<>(edgeClass);
            }
        }
    } else {
        if (model.multiGraph()) {
            if (isDirected()) {
                if (model.weighted()) {
                    return new DirectedWeightedMultigraph<>(edgeClass);
                } else {
                    return new DirectedMultigraph<>(edgeClass);
                }
            } else {
                if (model.weighted()) {
                    return new WeightedMultigraph<>(edgeClass);
                } else {
                    return new Multigraph<>(edgeClass);
                }
            }
        } else {
            if (isDirected()) {
                if (model.weighted()) {
                    return new SimpleDirectedWeightedGraph<>(edgeClass);
                } else {
                    return new SimpleDirectedGraph<>(edgeClass);
                }
            } else {
                if (model.weighted()) {
                    return new SimpleWeightedGraph<>(edgeClass);
                } else {
                    return new SimpleGraph<>(edgeClass);
                }
            }
        }
    }

}
 
示例2
@Test
public void testStateGraphDotOutput() throws IOException, ImportException {
    URL stateGraphDotFileUrl = Resources.getResource("state-graph.dot");
    String expectedStateGraphDot = Resources.toString(stateGraphDotFileUrl, StandardCharsets.UTF_8);

    StringWriter sw = new StringWriter();
    PrintWriter pw  = new PrintWriter(sw);
    ModularXmppClientToServerConnectionTool.printStateGraph(pw, false);
    String currentStateGraphDot = sw.toString();

    @SuppressWarnings("serial")
    DOTImporter<String, DefaultEdge> dotImporter = new DOTImporter<>(
            (id, attributes) -> id,
            (from, to, label, attributes) -> {
                    return new DefaultEdge() {
                        @Override
                        public int hashCode() {
                            return HashCode.builder()
                                    .append(getSource())
                                    .append(getTarget())
                                    .build();
                        }

                        @Override
                        public boolean equals(Object other) {
                            return EqualsUtil.equals(this, other, (b, o) ->
                                b.append(getSource(), o.getSource())
                                 .append(getTarget(), o.getTarget())
                            );
                        }
                    };
                }
            );

    DirectedPseudograph<String, DefaultEdge> currentStateGraph = new DirectedPseudograph<>(DefaultEdge.class);
    DirectedPseudograph<String, DefaultEdge> expectedStateGraph = new DirectedPseudograph<>(DefaultEdge.class);

    dotImporter.importGraph(expectedStateGraph, new StringReader(expectedStateGraphDot));
    dotImporter.importGraph(currentStateGraph, new StringReader(currentStateGraphDot));

    assertEquals(expectedStateGraph, currentStateGraph);
}