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 }