blob: a455f3f0ab86c752ae8abd517fb9d5357bc92e53 [file] [log] [blame]
 // 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 ( weightedDirectedGraph = (*WeightedDirectedGraph)(nil) _ graph.Graph = weightedDirectedGraph _ graph.Directed = weightedDirectedGraph _ graph.WeightedDirected = weightedDirectedGraph ) // Tests Issue #27 func TestWeightedEdgeOvercounting(t *testing.T) { g := generateDummyGraph() if neigh := g.From(int64(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 generateDummyWeightedGraph() *WeightedDirectedGraph { nodes := [4]struct{ srcID, targetID int }{ {2, 1}, {1, 0}, {2, 0}, {0, 2}, } g := NewWeightedDirectedGraph(0, math.Inf(1)) for _, n := range nodes { g.SetWeightedEdge(WeightedEdge{F: Node(n.srcID), T: Node(n.targetID), W: 1}) } return g } // Test for issue #123 https://github.com/gonum/graph/issues/123 func TestIssue123WeightedDirectedGraph(t *testing.T) { defer func() { if r := recover(); r != nil { t.Errorf("unexpected panic: %v", r) } }() g := NewWeightedDirectedGraph(0, math.Inf(1)) n0 := g.NewNode() g.AddNode(n0) n1 := g.NewNode() g.AddNode(n1) g.RemoveNode(n0.ID()) n2 := g.NewNode() g.AddNode(n2) }