From 327a95b037b0064d5576a7331795c23c4cfe4c68 Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Mon, 21 Dec 2015 12:43:40 +0100 Subject: [PATCH] Tests for MaximumTimeTerminator refs #61 --- .../KnownOptimaFoundTerminator.java | 4 +- .../optimization/population/Population.java | 4 +- .../MaximumTimeTerminatorTest.java | 52 +++++++++++++++++++ 3 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 src/test/java/eva2/optimization/operator/terminators/MaximumTimeTerminatorTest.java diff --git a/src/main/java/eva2/optimization/operator/terminators/KnownOptimaFoundTerminator.java b/src/main/java/eva2/optimization/operator/terminators/KnownOptimaFoundTerminator.java index 3ca28b20..73bf99d6 100644 --- a/src/main/java/eva2/optimization/operator/terminators/KnownOptimaFoundTerminator.java +++ b/src/main/java/eva2/optimization/operator/terminators/KnownOptimaFoundTerminator.java @@ -29,12 +29,12 @@ public class KnownOptimaFoundTerminator implements InterfaceTerminator, Serializ } @Override - public void initialize(InterfaceOptimizationProblem prob) { + public void initialize(InterfaceOptimizationProblem prob) throws IllegalArgumentException { if (prob != null) { if (prob instanceof InterfaceMultimodalProblemKnown) { mProblem = (InterfaceMultimodalProblemKnown) prob; } else { - LOGGER.log(Level.WARNING, "KnownOptimaFoundTerminator only works with InterfaceMultimodalProblemKnown instances!"); + throw new IllegalArgumentException("KnownOptimaFoundTerminator only works with InterfaceMultimodalProblemKnown instances!"); } } else { LOGGER.log(Level.WARNING, "KnownOptimaFoundTerminator wont work with null problem!"); diff --git a/src/main/java/eva2/optimization/population/Population.java b/src/main/java/eva2/optimization/population/Population.java index 2087cfb8..fa3eeda2 100644 --- a/src/main/java/eva2/optimization/population/Population.java +++ b/src/main/java/eva2/optimization/population/Population.java @@ -722,9 +722,7 @@ public class Population extends ArrayList implements Popul this.historyList.add((AbstractEAIndividual) this.getBestEAIndividual().clone()); } if (isAutoAging()) { - for (AbstractEAIndividual individual : this) { - individual.incrAge(); - } + this.forEach(AbstractEAIndividual::incrAge); } this.generationCount++; firePropertyChangedEvent(NEXT_GENERATION_PERFORMED); diff --git a/src/test/java/eva2/optimization/operator/terminators/MaximumTimeTerminatorTest.java b/src/test/java/eva2/optimization/operator/terminators/MaximumTimeTerminatorTest.java new file mode 100644 index 00000000..a4e35cac --- /dev/null +++ b/src/test/java/eva2/optimization/operator/terminators/MaximumTimeTerminatorTest.java @@ -0,0 +1,52 @@ +package eva2.optimization.operator.terminators; + +import eva2.optimization.population.Population; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class MaximumTimeTerminatorTest { + MaximumTimeTerminator terminator; + + @Before + public void setUp() throws Exception { + terminator = new MaximumTimeTerminator(); + terminator.setMaximumTime(1); + } + + @Test(timeout = 2500) + public void testIsTerminated() throws Exception { + terminator.initialize(null); + + while(!terminator.isTerminated(new Population())); + } + + @Test + public void testLastTerminationMessage() throws Exception { + assertNotNull(terminator.lastTerminationMessage()); + } + + @Test + public void testInitialize() throws Exception { + terminator.initialize(null); + // Should not be terminated after reinitialization + assertFalse(terminator.isTerminated(new Population())); + } + + @Test + public void testToString() throws Exception { + assertNotNull(terminator.toString()); + } + + @Test + public void testGetMaximumTime() throws Exception { + assertEquals(1, terminator.getMaximumTime()); + } + + @Test + public void testSetMaximumTime() throws Exception { + terminator.setMaximumTime(10); + assertEquals(10, terminator.getMaximumTime()); + } +} \ No newline at end of file