1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.math.genetics;
18
19 import static org.junit.Assert.*;
20
21 import java.util.ArrayList;
22 import java.util.List;
23
24 import org.junit.Test;
25
26 public class ChromosomeTest {
27
28 @Test
29 public void testCompareTo() {
30 Chromosome c1 = new Chromosome() {
31 public double fitness() {
32 return 0;
33 }
34 };
35 Chromosome c2 = new Chromosome() {
36 public double fitness() {
37 return 10;
38 }
39 };
40 Chromosome c3 = new Chromosome() {
41 public double fitness() {
42 return 10;
43 }
44 };
45
46 assertTrue(c1.compareTo(c2) < 0);
47 assertTrue(c2.compareTo(c1) > 0);
48 assertEquals(0,c3.compareTo(c2));
49 assertEquals(0,c2.compareTo(c3));
50 }
51
52 private abstract static class DummyChromosome extends Chromosome {
53 private final int repr;
54
55 public DummyChromosome(final int repr) {
56 this.repr = repr;
57 }
58 @Override
59 protected boolean isSame(Chromosome another) {
60 return ((DummyChromosome) another).repr == repr;
61 }
62 }
63
64 @Test
65 public void testFindSameChromosome() {
66 Chromosome c1 = new DummyChromosome(1) {
67 public double fitness() {
68 return 1;
69 }
70 };
71 Chromosome c2 = new DummyChromosome(2) {
72 public double fitness() {
73 return 2;
74 }
75 };
76 Chromosome c3 = new DummyChromosome(3) {
77 public double fitness() {
78 return 3;
79 }
80 };
81 Chromosome c4 = new DummyChromosome(1) {
82 public double fitness() {
83 return 5;
84 }
85 };
86 Chromosome c5 = new DummyChromosome(15) {
87 public double fitness() {
88 return 15;
89 }
90 };
91
92 List<Chromosome> popChr = new ArrayList<Chromosome>();
93 popChr.add(c1);
94 popChr.add(c2);
95 popChr.add(c3);
96 Population pop = new ListPopulation(popChr,3) {
97 public Population nextGeneration() {
98
99 return null;
100 }
101 };
102
103 assertNull(c5.findSameChromosome(pop));
104 assertEquals(c1, c4.findSameChromosome(pop));
105
106 c4.searchForFitnessUpdate(pop);
107 assertEquals(1, c4.getFitness(),0);
108 }
109
110 }
111