@Test public void testAttributed() { AttributedDirectedGraph<String, DefaultEdge> g = AttributedDirectedGraph.create(new DefaultAttributedEdgeFactory()); g.addVertex("A"); g.addVertex("B"); g.addVertex("C"); g.addVertex("D"); g.addVertex("E"); g.addVertex("F"); g.addEdge("A", "B", 1); g.addEdge("B", "C", 1); g.addEdge("D", "C", 1); g.addEdge("C", "D", 1); g.addEdge("E", "F", 1); g.addEdge("C", "C", 1); assertEquals("[A, B, C, D]", shortestPath(g, "A", "D").toString()); g.addEdge("B", "D", 1); assertEquals("[A, B, D]", shortestPath(g, "A", "D").toString()); assertNull("There is no path from A to E", shortestPath(g, "A", "E")); assertEquals("[]", shortestPath(g, "D", "D").toString()); assertNull("Node X is not in the graph", shortestPath(g, "X", "A")); assertEquals("[[A, B, C, D], [A, B, D]]", paths(g, "A", "D").toString()); assertThat(g.addVertex("B"), is(false)); assertThat(Iterables.size(g.getEdges("A", "B")), is(1)); assertThat(g.addEdge("A", "B", 1), nullValue()); assertThat(Iterables.size(g.getEdges("A", "B")), is(1)); assertThat(g.addEdge("A", "B", 2), notNullValue()); assertThat(Iterables.size(g.getEdges("A", "B")), is(2)); }