Exemplo n.º 1
0
    public void AddEdge_updates_incoming_and_outgoing_neighbors()
    {
        var vertexOne = new Vertex {
            Id = 1
        };
        var vertexTwo = new Vertex {
            Id = 2
        };
        var vertexThree = new Vertex {
            Id = 3
        };

        var edgeOne = new Edge {
            Id = 1
        };
        var edgeTwo = new Edge {
            Id = 2
        };
        var edgeThree = new Edge {
            Id = 3
        };

        var graph = new Multigraph <Vertex, Edge>();

        graph.AddVertices(new[] { vertexOne, vertexTwo, vertexThree });
        graph.AddEdge(vertexOne, vertexTwo, edgeOne);
        graph.AddEdge(vertexOne, vertexThree, edgeTwo);
        graph.AddEdge(vertexTwo, vertexThree, edgeThree);

        Assert.Equal(2, graph.GetOutgoingNeighbors(vertexOne).Count());
        Assert.Equal(2, graph.GetOutgoingNeighbors(vertexOne).Intersect(new[] { vertexTwo, vertexThree }).Count());

        Assert.Equal(2, graph.GetIncomingNeighbors(vertexThree).Count());
        Assert.Equal(2, graph.GetIncomingNeighbors(vertexThree).Intersect(new[] { vertexOne, vertexTwo }).Count());
    }