individual_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package gago
  2. import (
  3. "testing"
  4. )
  5. func TestCloneIndividual(t *testing.T) {
  6. var (
  7. rng = newRandomNumberGenerator()
  8. genome = NewVector(rng)
  9. indi1 = NewIndividual(genome, rng)
  10. indi2 = indi1.Clone(rng)
  11. )
  12. if &indi1 == &indi2 || &indi1.Genome == &indi2.Genome {
  13. t.Error("Individual was not deep copied")
  14. }
  15. }
  16. func TestEvaluateIndividual(t *testing.T) {
  17. var (
  18. rng = newRandomNumberGenerator()
  19. genome = NewVector(rng)
  20. indi = NewIndividual(genome, rng)
  21. )
  22. if indi.Evaluated {
  23. t.Error("Individual shouldn't have Evaluated set to True")
  24. }
  25. indi.Evaluate()
  26. if !indi.Evaluated {
  27. t.Error("Individual should have Evaluated set to True")
  28. }
  29. }
  30. func TestMutateIndividual(t *testing.T) {
  31. var (
  32. rng = newRandomNumberGenerator()
  33. genome = NewVector(rng)
  34. indi = NewIndividual(genome, rng)
  35. )
  36. indi.Evaluate()
  37. indi.Mutate(rng)
  38. if indi.Evaluated {
  39. t.Error("Individual shouldn't have Evaluated set to True")
  40. }
  41. }
  42. func TestCrossoverIndividual(t *testing.T) {
  43. var (
  44. rng = newRandomNumberGenerator()
  45. indi1 = NewIndividual(NewVector(rng), rng)
  46. indi2 = NewIndividual(NewVector(rng), rng)
  47. offspring1, offspring2 = indi1.Crossover(indi2, rng)
  48. )
  49. if offspring1.Evaluated || offspring2.Evaluated {
  50. t.Error("Offsprings shouldn't have Evaluated set to True")
  51. }
  52. if &offspring1 == &indi1 || &offspring1 == &indi2 || &offspring2 == &indi1 || &offspring2 == &indi2 {
  53. t.Error("Offsprings shouldn't share pointers with parents")
  54. }
  55. }