예제 #1
0
  public void testAddVertex() {
    Graph<Integer> graph = new JGraph<Integer>(true);
    // Define the vertexes
    Integer v1 = new Integer(1);
    Integer v2 = new Integer(2);
    Integer v3 = new Integer(3);
    Integer v4 = new Integer(4);
    // Add these vertexes to the graph,and assert the return value is "true"
    assertTrue(graph.addVertex(v1));
    assertTrue(graph.addVertex(v2));
    assertTrue(graph.addVertex(v3));
    assertTrue(graph.addVertex(v4));
    // Assert the return value is "false" when add a vertex that already exists.
    assertFalse(graph.addVertex(v4));

    // Test if the vertexes are in the graph
    assertTrue(graph.containsVertex(v1));
    assertTrue(graph.containsVertex(v2));
    assertTrue(graph.containsVertex(v3));
    assertTrue(graph.containsVertex(v4));

    // Test vertex set
    Set<Integer> vertexes = graph.vertexSet();
    assertEquals(4, vertexes.size());
    assertTrue(vertexes.contains(v1));
    assertTrue(vertexes.contains(v2));
    assertTrue(vertexes.contains(v3));
    assertTrue(vertexes.contains(v4));

    // Add edges to the graph,and assert the return value is true.
    assertTrue(graph.addEdge(v1, v2));
    assertTrue(graph.addEdge(v1, v3));
    assertTrue(graph.addEdge(v1, v4));
    assertTrue(graph.addEdge(v2, v4));
    // Assert the return value is "false" when add an edge that already exists.
    assertFalse(graph.addEdge(v2, v4));
    // Test adjacence

    assertTrue(graph.containsEdge(v1, v2));
    assertTrue(graph.containsEdge(v1, v3));
    assertTrue(graph.containsEdge(v1, v4));
    assertTrue(graph.containsEdge(v2, v4));
    assertFalse(graph.containsEdge(v3, v4));
    assertFalse(graph.containsEdge(v2, v1));
    Edge<Integer> edge1 = graph.getEdge(v1, v2);
    assertNotNull(edge1);
    assertEquals(v1, edge1.getStart());
    assertEquals(v2, edge1.getEnd());
    assertNull(graph.getEdge(v2, v3));
    // Test in degree
    assertEquals(3, graph.outDegree(v1));
    assertEquals(1, graph.outDegree(v2));
    assertEquals(0, graph.outDegree(v3));
    assertEquals(0, graph.outDegree(v4));
    // Test out degree
    assertEquals(0, graph.inDegree(v1));
    assertEquals(1, graph.inDegree(v2));
    assertEquals(1, graph.inDegree(v3));
    assertEquals(2, graph.inDegree(v4));
    GraphHelper.printGraph(graph, true, false);
  }