package ngenes2.ops.crossover;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import static org.junit.Assert.*;
public class MidBreakCrossoverTest {
@Test
public void testMate() {
final Integer ONE = new Integer(1);
final Integer TWO = new Integer(2);
final int size = 4;
List<Integer> l1 = new ArrayList<Integer>(size);
List<Integer> l2 = new ArrayList<Integer>(size);
for (int i = 0; i < size; i++) {
l1.add(ONE);
l2.add(TWO);
}
MidBreakCrossover<Integer> co = new MidBreakCrossover<Integer>();
List<List<Integer>> result = co.mate(l1, l2);
assertEquals(2, result.size());
for (List<Integer> chrome : result) {
if (chrome.get(0) == ONE) {
assertSame(ONE, chrome.get(1));
assertSame(TWO, chrome.get(2));
assertSame(TWO, chrome.get(3));
} else {
assertSame(TWO, chrome.get(0));
assertSame(TWO, chrome.get(1));
assertSame(ONE, chrome.get(2));
assertSame(ONE, chrome.get(3));
}
}
assertSame(result.get(0).get(0), result.get(1).get(3));
}
@Test(expected = IllegalArgumentException.class)
public void testSameLength() {
List<Integer> l1 = new ArrayList<Integer>(1);
l1.add(1);
List<Integer> l2 = new ArrayList<Integer>(2);
l2.add(2);
l2.add(2);
MidBreakCrossover<Integer> co = new MidBreakCrossover<Integer>();
co.mate(l1, l2);
}
}