github.com/yaricom/goNEAT@v0.0.0-20210507221059-e2110b885482/neat/genetics/gene_test.go (about)

     1  package genetics
     2  
     3  import (
     4  	"testing"
     5  	"github.com/yaricom/goNEAT/neat/network"
     6  	"github.com/yaricom/goNEAT/neat"
     7  	"reflect"
     8  	"github.com/yaricom/goNEAT/neat/utils"
     9  )
    10  
    11  // Tests Gene WriteGene
    12  func TestNewGeneCopy(t *testing.T) {
    13  	nodes := []*network.NNode{
    14  		{Id:1, NeuronType: network.InputNeuron, ActivationType: utils.NullActivation, Incoming:make([]*network.Link, 0), Outgoing:make([]*network.Link, 0)},
    15  		{Id:2, NeuronType: network.OutputNeuron, ActivationType: utils.SigmoidSteepenedActivation, Incoming:make([]*network.Link, 0), Outgoing:make([]*network.Link, 0)},
    16  	}
    17  	trait := &neat.Trait{Id:1, Params:[]float64{0.1, 0, 0, 0, 0, 0, 0, 0}}
    18  	g1 := NewGeneWithTrait(trait, 3.2, nodes[0], nodes[1], true, 42, 5.2)
    19  
    20  	// test
    21  	g := NewGeneCopy(g1, trait, nodes[0], nodes[1])
    22  	if g.Link.InNode.Id != nodes[0].Id {
    23  		t.Error("g.Link.InNode.Id != nodes[0].Id", g.Link.InNode.Id)
    24  	}
    25  	if g.Link.OutNode.Id != nodes[1].Id {
    26  		t.Error("g.Link.OutNode.Id != nodes[1].Id", g.Link.OutNode.Id)
    27  	}
    28  	if g.Link.Trait.Id != trait.Id {
    29  		t.Error("g.Link.Trait.Id != trait.Id", g.Link.Trait.Id)
    30  	}
    31  	if reflect.DeepEqual(g.Link.Trait.Params, trait.Params) == false {
    32  		t.Error("reflect.DeepEqual(g.Link.Trait.Params, trait.Params) == false")
    33  	}
    34  	if g.InnovationNum != g1.InnovationNum {
    35  		t.Error("g.InnovationNum != g1.InnovationNum", g.InnovationNum, g1.InnovationNum)
    36  	}
    37  	if g.MutationNum != g1.MutationNum {
    38  		t.Error("g.MutationNum != g1.MutationNum", g.MutationNum, g1.MutationNum)
    39  	}
    40  	if g.IsEnabled != g1.IsEnabled {
    41  		t.Error("g.IsEnabled != g1.IsEnabled", g.IsEnabled, g1.IsEnabled)
    42  	}
    43  }