mirror of
https://github.com/gonum/gonum.git
synced 2025-10-20 13:55:20 +08:00
64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
// Copyright ©2014 The gonum Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package simple
|
|
|
|
import (
|
|
"math"
|
|
"testing"
|
|
|
|
"gonum.org/v1/gonum/graph"
|
|
)
|
|
|
|
var _ graph.Graph = &DirectedGraph{}
|
|
var _ graph.Directed = &DirectedGraph{}
|
|
var _ graph.Directed = &DirectedGraph{}
|
|
|
|
// Tests Issue #27
|
|
func TestEdgeOvercounting(t *testing.T) {
|
|
g := generateDummyGraph()
|
|
|
|
if neigh := g.From(Node(Node(2))); len(neigh) != 2 {
|
|
t.Errorf("Node 2 has incorrect number of neighbors got neighbors %v (count %d), expected 2 neighbors {0,1}", neigh, len(neigh))
|
|
}
|
|
}
|
|
|
|
func generateDummyGraph() *DirectedGraph {
|
|
nodes := [4]struct{ srcID, targetID int }{
|
|
{2, 1},
|
|
{1, 0},
|
|
{2, 0},
|
|
{0, 2},
|
|
}
|
|
|
|
g := NewDirectedGraph(0, math.Inf(1))
|
|
|
|
for _, n := range nodes {
|
|
g.SetEdge(Edge{F: Node(n.srcID), T: Node(n.targetID), W: 1})
|
|
}
|
|
|
|
return g
|
|
}
|
|
|
|
// Test for issue #123 https://github.com/gonum/graph/issues/123
|
|
func TestIssue123DirectedGraph(t *testing.T) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
t.Errorf("unexpected panic: %v", r)
|
|
}
|
|
}()
|
|
g := NewDirectedGraph(0, math.Inf(1))
|
|
|
|
n0 := g.NewNode()
|
|
g.AddNode(n0)
|
|
|
|
n1 := g.NewNode()
|
|
g.AddNode(n1)
|
|
|
|
g.RemoveNode(n0)
|
|
|
|
n2 := g.NewNode()
|
|
g.AddNode(n2)
|
|
}
|