2
* Licensed to the Apache Software Foundation (ASF) under one or more
3
* contributor license agreements. See the NOTICE file distributed with
4
* this work for additional information regarding copyright ownership.
5
* The ASF licenses this file to You under the Apache License, Version 2.0
6
* (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
9
* http://www.apache.org/licenses/LICENSE-2.0
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
17
package org.apache.commons.math.genetics;
19
import static org.junit.Assert.*;
21
import java.util.ArrayList;
22
import java.util.List;
24
import org.junit.Test;
26
public class ChromosomeTest {
29
public void testCompareTo() {
30
Chromosome c1 = new Chromosome() {
31
public double fitness() {
35
Chromosome c2 = new Chromosome() {
36
public double fitness() {
40
Chromosome c3 = new Chromosome() {
41
public double fitness() {
46
assertTrue(c1.compareTo(c2) < 0);
47
assertTrue(c2.compareTo(c1) > 0);
48
assertEquals(0,c3.compareTo(c2));
49
assertEquals(0,c2.compareTo(c3));
52
private abstract static class DummyChromosome extends Chromosome {
53
private final int repr;
55
public DummyChromosome(final int repr) {
59
protected boolean isSame(Chromosome another) {
60
return ((DummyChromosome) another).repr == repr;
65
public void testFindSameChromosome() {
66
Chromosome c1 = new DummyChromosome(1) {
67
public double fitness() {
71
Chromosome c2 = new DummyChromosome(2) {
72
public double fitness() {
76
Chromosome c3 = new DummyChromosome(3) {
77
public double fitness() {
81
Chromosome c4 = new DummyChromosome(1) {
82
public double fitness() {
86
Chromosome c5 = new DummyChromosome(15) {
87
public double fitness() {
92
List<Chromosome> popChr = new ArrayList<Chromosome>();
96
Population pop = new ListPopulation(popChr,3) {
97
public Population nextGeneration() {
103
assertNull(c5.findSameChromosome(pop));
104
assertEquals(c1, c4.findSameChromosome(pop));
106
c4.searchForFitnessUpdate(pop);
107
assertEquals(1, c4.getFitness(),0);