| // Copyright ©2015 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 gen |
| |
| import ( |
| "math" |
| "testing" |
| |
| "gonum.org/v1/gonum/graph/simple" |
| ) |
| |
| var smallWorldDimensionParameters = [][]int{ |
| {50}, |
| {10, 10}, |
| {6, 5, 4}, |
| } |
| |
| func TestNavigableSmallWorldUndirected(t *testing.T) { |
| for p := 1; p < 5; p++ { |
| for q := 0; q < 10; q++ { |
| for r := 0.5; r < 10; r++ { |
| for _, dims := range smallWorldDimensionParameters { |
| g := &gnUndirected{UndirectedBuilder: simple.NewUndirectedGraph(0, math.Inf(1))} |
| err := NavigableSmallWorld(g, dims, p, q, r, nil) |
| n := 1 |
| for _, d := range dims { |
| n *= d |
| } |
| if err != nil { |
| t.Fatalf("unexpected error: dims=%v n=%d, p=%d, q=%d, r=%v: %v", dims, n, p, q, r, err) |
| } |
| if g.addBackwards { |
| t.Errorf("edge added with From.ID > To.ID: dims=%v n=%d, p=%d, q=%d, r=%v", dims, n, p, q, r) |
| } |
| if g.addSelfLoop { |
| t.Errorf("unexpected self edge: dims=%v n=%d, p=%d, q=%d, r=%v", dims, n, p, q, r) |
| } |
| if g.addMultipleEdge { |
| t.Errorf("unexpected multiple edge: dims=%v n=%d, p=%d, q=%d, r=%v", dims, n, p, q, r) |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| func TestNavigableSmallWorldDirected(t *testing.T) { |
| for p := 1; p < 5; p++ { |
| for q := 0; q < 10; q++ { |
| for r := 0.5; r < 10; r++ { |
| for _, dims := range smallWorldDimensionParameters { |
| g := &gnDirected{DirectedBuilder: simple.NewDirectedGraph(0, math.Inf(1))} |
| err := NavigableSmallWorld(g, dims, p, q, r, nil) |
| n := 1 |
| for _, d := range dims { |
| n *= d |
| } |
| if err != nil { |
| t.Fatalf("unexpected error: dims=%v n=%d, p=%d, q=%d, r=%v: %v", dims, n, p, q, r, err) |
| } |
| if g.addSelfLoop { |
| t.Errorf("unexpected self edge: dims=%v n=%d, p=%d, q=%d, r=%v", dims, n, p, q, r) |
| } |
| if g.addMultipleEdge { |
| t.Errorf("unexpected multiple edge: dims=%v n=%d, p=%d, q=%d, r=%v", dims, n, p, q, r) |
| } |
| } |
| } |
| } |
| } |
| } |