0

スパース グラフを実装し、junit テストを実行する必要があります。

これは私のグラフクラスです:

package graphs;
import java.util.Collection;
import java.util.HashMap;
public class SparseGraph<V, E> implements Graph<V, E> {
    HashMap<V, HashMap<V, E>> node;
    public SparseGraph() {
        node = new HashMap<>();
    }
    @Override
    public boolean addVertex(V vertex) {
        if (hasVertex(vertex)) {
            return false;
        }
        else {
            node.put(vertex, new HashMap());
        }
        return true;
    }
    @Override
    public boolean addEdge(V vertex1, V vertex2, E data) {
        if (!hasVertex(vertex1) || !hasVertex(vertex2)) {
            return false;
        }
        if (hasEdge(vertex1, vertex2) && getData(vertex1, vertex2).equals(data)) {
            return false;
        }
        else if (hasEdge(vertex1, vertex2) && !getData(vertex1, vertex2).equals(data)) {
            node.get(vertex1).put(vertex2, data);
            return true;
        }
        else {
            (node.get(vertex1)).put(vertex2, data);
        }
        return true;
    }
    @Override
    public boolean hasVertex(V vertex) {
        if (vertex == null) return false;
        return (node.containsKey(vertex));
    }
    @Override
    public boolean hasEdge(V vertex1, V vertex2) {
        if (!hasVertex(vertex1) || !hasVertex(vertex2)) return false;
        if (node.get(vertex1).containsKey(vertex2)) {
            return true;
        }
        return false;
    }
    @Override
    public E getData(V vertex1, V vertex2) {
        if (!hasVertex(vertex1) || !hasVertex(vertex2)) return null;
        return node.get(vertex1).get(vertex2);
    }
    @Override
    public Collection<V> getVertices() {
        return node.keySet();
    }
    @Override
    public Collection<V> getNeighbors(V vertex) {
        if (!hasVertex(vertex))
            return null;
        else
            return node.get(vertex).keySet();
    }
}// end class

これは私のテストです:

public void testGetVertices() {
    SparseGraph instance = new SparseGraph();
    instance.addVertex("A");
    instance.addVertex("B");
    instance.addVertex("C");
    instance.addVertex("D");
    instance.addVertex("E");
    //assertEquals("[D, E, A, B, C]",instance.getVertices());
}

私の質問は、コレクションにすべての頂点が存在するかどうかを確認するテストを作成するにはどうすればよいですか?

文字列をキーセットと比較しようとしましたが、エラーは文字列であると予想されていましたが、メソッド assertEquals はキーセットを取得します。

4

3 に答える 3

0

グラフを繰り返し処理し、それぞれが期待値のリストに表示されるかどうかを確認します。

于 2015-06-15T12:15:42.047 に答える
-1

プレーンな Java を使用した JUnit-Test は次のようになります。

assertEquals(5, instance.getVertices().size());
assertTrue(instance.getVertices().hasVertex("A"));
assertTrue(instance.getVertices().hasVertex("B"));
assertTrue(instance.getVertices().hasVertex("C"));
assertTrue(instance.getVertices().hasVertex("D"));
assertTrue(instance.getVertices().hasVertex("E"));
于 2015-06-15T12:17:46.887 に答える