public void test() {
    Graph g = new PrimaryGraph();
    Node[] n = g.newNodes(0, 1, 2, 3, 4, 5, 6, 7, 8);
    g.newEdge(n[0], n[1]);
    g.newEdge(n[1], n[2]);
    g.newEdge(n[2], n[1]);

    g.newEdge(n[3], n[4]);
    g.newEdge(n[4], n[5]);
    g.newEdge(n[5], n[3]);

    g.newEdge(n[7], n[6]);
    g.newEdge(n[8], n[7]);
    Clusterer scc = Clusterers.stronglyConnectedComponents(g);

    assertEquals(6, scc.getClusters().size());
    Set<Set<Node>> clusters = new HashSet<Set<Node>>();
    for (Object c : scc.getClusters()) {
      clusters.add(new HashSet<Node>(scc.getCluster(c)));
    }

    assertTrue(clusters.contains(new HashSet<Node>(Arrays.asList(n[1], n[2]))));
    assertTrue(clusters.contains(new HashSet<Node>(Arrays.asList(n[0]))));
    assertTrue(clusters.contains(new HashSet<Node>(Arrays.asList(n[3], n[4], n[5]))));
    assertTrue(clusters.contains(new HashSet<Node>(Arrays.asList(n[6]))));
    assertTrue(clusters.contains(new HashSet<Node>(Arrays.asList(n[7]))));
  }