gonum.org/v1/gonum@v0.14.0/graph/graphs/gen/holme_kim_test.go (about)

     1  // Copyright ©2015 The Gonum Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package gen
     6  
     7  import (
     8  	"testing"
     9  
    10  	"gonum.org/v1/gonum/graph/simple"
    11  )
    12  
    13  func TestTunableClusteringScaleFree(t *testing.T) {
    14  	t.Parallel()
    15  	for n := 2; n <= 20; n++ {
    16  		for m := 0; m < n; m++ {
    17  			for p := 0.; p <= 1; p += 0.1 {
    18  				g := &gnUndirected{UndirectedBuilder: simple.NewUndirectedGraph()}
    19  				orig := g.NewNode()
    20  				g.AddNode(orig)
    21  				err := TunableClusteringScaleFree(g, n, m, p, nil)
    22  				if err != nil {
    23  					t.Fatalf("unexpected error: n=%d, m=%d, p=%v: %v", n, m, p, err)
    24  				}
    25  				if g.From(orig.ID()).Len() != 0 {
    26  					t.Errorf("edge added from already existing node: n=%d, m=%d, p=%v", n, m, p)
    27  				}
    28  				if g.addBackwards {
    29  					t.Errorf("edge added with From.ID > To.ID: n=%d, m=%d, p=%v", n, m, p)
    30  				}
    31  				if g.addSelfLoop {
    32  					t.Errorf("unexpected self edge: n=%d, m=%d, p=%v", n, m, p)
    33  				}
    34  				if g.addMultipleEdge {
    35  					t.Errorf("unexpected multiple edge: n=%d, m=%d, p=%v", n, m, p)
    36  				}
    37  			}
    38  		}
    39  	}
    40  }
    41  
    42  func TestPreferentialAttachment(t *testing.T) {
    43  	t.Parallel()
    44  	for n := 2; n <= 20; n++ {
    45  		for m := 0; m < n; m++ {
    46  			g := &gnUndirected{UndirectedBuilder: simple.NewUndirectedGraph()}
    47  			err := PreferentialAttachment(g, n, m, nil)
    48  			if err != nil {
    49  				t.Fatalf("unexpected error: n=%d, m=%d: %v", n, m, err)
    50  			}
    51  			if g.addBackwards {
    52  				t.Errorf("edge added with From.ID > To.ID: n=%d, m=%d", n, m)
    53  			}
    54  			if g.addSelfLoop {
    55  				t.Errorf("unexpected self edge: n=%d, m=%d", n, m)
    56  			}
    57  			if g.addMultipleEdge {
    58  				t.Errorf("unexpected multiple edge: n=%d, m=%d", n, m)
    59  			}
    60  		}
    61  	}
    62  }