From: Gary P. <gpa...@gm...> - 2009-08-24 08:51:17
|
Simplify the unit tests by correctly using mocks and not needing to wire up a large object graph. Signed-off-by: Gary Pampara <gpa...@gm...> --- .../single/BestParticlePositionTest.java | 27 ++++++++++-------- .../cilib/measurement/single/FitnessTest.java | 26 +++++++++++------- .../cilib/measurement/single/SolutionTest.java | 28 +++++++++++-------- 3 files changed, 47 insertions(+), 34 deletions(-) diff --git a/src/test/java/net/sourceforge/cilib/measurement/single/BestParticlePositionTest.java b/src/test/java/net/sourceforge/cilib/measurement/single/BestParticlePositionTest.java index ec200fb..2255338 100644 --- a/src/test/java/net/sourceforge/cilib/measurement/single/BestParticlePositionTest.java +++ b/src/test/java/net/sourceforge/cilib/measurement/single/BestParticlePositionTest.java @@ -21,36 +21,39 @@ */ package net.sourceforge.cilib.measurement.single; -import net.sourceforge.cilib.entity.EntityType; -import net.sourceforge.cilib.entity.Particle; +import net.sourceforge.cilib.algorithm.Algorithm; import net.sourceforge.cilib.measurement.Measurement; import net.sourceforge.cilib.problem.InferiorFitness; -import net.sourceforge.cilib.pso.PSO; -import net.sourceforge.cilib.pso.particle.StandardParticle; +import net.sourceforge.cilib.problem.OptimisationSolution; import net.sourceforge.cilib.util.Vectors; +import org.jmock.Expectations; +import org.jmock.Mockery; +import org.jmock.integration.junit4.JMock; +import org.jmock.integration.junit4.JUnit4Mockery; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; /** * * @author Gary Pampara */ +@RunWith(JMock.class) public class BestParticlePositionTest { + private Mockery mockery = new JUnit4Mockery(); @Test public void testBestParticlePositionDomain() { - Particle p = new StandardParticle(); - p.getProperties().put(EntityType.Particle.BEST_POSITION, Vectors.create(4.0)); - p.getProperties().put(EntityType.Particle.BEST_FITNESS, InferiorFitness.instance()); + final Algorithm algorithm = mockery.mock(Algorithm.class); + final OptimisationSolution mockSolution = new OptimisationSolution(Vectors.create(4.0), InferiorFitness.instance()); - PSO pso = new PSO(); - pso.getTopology().add(p); + mockery.checking(new Expectations() {{ + oneOf(algorithm).getBestSolution(); will(returnValue(mockSolution)); + }}); Measurement measurement = new BestParticlePosition(); - measurement.getValue(pso); - - Assert.assertEquals(p.getBestPosition().toString(), measurement.getValue(pso).toString()); + Assert.assertEquals("[4.0]", measurement.getValue(algorithm).toString()); } } diff --git a/src/test/java/net/sourceforge/cilib/measurement/single/FitnessTest.java b/src/test/java/net/sourceforge/cilib/measurement/single/FitnessTest.java index 26d0229..58b6093 100644 --- a/src/test/java/net/sourceforge/cilib/measurement/single/FitnessTest.java +++ b/src/test/java/net/sourceforge/cilib/measurement/single/FitnessTest.java @@ -21,34 +21,40 @@ */ package net.sourceforge.cilib.measurement.single; -import net.sourceforge.cilib.ec.EC; -import net.sourceforge.cilib.ec.Individual; -import net.sourceforge.cilib.entity.EntityType; -import net.sourceforge.cilib.entity.Topology; +import net.sourceforge.cilib.algorithm.Algorithm; import net.sourceforge.cilib.measurement.Measurement; import net.sourceforge.cilib.problem.MinimisationFitness; +import net.sourceforge.cilib.problem.OptimisationSolution; import net.sourceforge.cilib.type.types.Real; +import net.sourceforge.cilib.util.Vectors; +import org.jmock.Expectations; +import org.jmock.Mockery; +import org.jmock.integration.junit4.JMock; +import org.jmock.integration.junit4.JUnit4Mockery; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; /** * * @author Gary Pampara */ +@RunWith(JMock.class) public class FitnessTest { + private Mockery mockery = new JUnit4Mockery(); @Test public void results() { - EC ec = new EC(); - Topology<Individual> topology = (Topology<Individual>) ec.getTopology(); + final Algorithm algorithm = mockery.mock(Algorithm.class); + final OptimisationSolution mockSolution = new OptimisationSolution(Vectors.create(1.0), new MinimisationFitness(0.0)); - Individual i = new Individual(); - i.getProperties().put(EntityType.FITNESS, new MinimisationFitness(0.0)); - topology.add(i); + mockery.checking(new Expectations() {{ + oneOf(algorithm).getBestSolution(); will(returnValue(mockSolution)); + }}); Measurement m = new Fitness(); - Assert.assertEquals(0.0, ((Real) m.getValue(ec)).getReal(), 0.00001); + Assert.assertEquals(0.0, ((Real) m.getValue(algorithm)).getReal(), 0.00001); } } diff --git a/src/test/java/net/sourceforge/cilib/measurement/single/SolutionTest.java b/src/test/java/net/sourceforge/cilib/measurement/single/SolutionTest.java index 013da6a..759cb8d 100644 --- a/src/test/java/net/sourceforge/cilib/measurement/single/SolutionTest.java +++ b/src/test/java/net/sourceforge/cilib/measurement/single/SolutionTest.java @@ -21,21 +21,24 @@ */ package net.sourceforge.cilib.measurement.single; -import net.sourceforge.cilib.ec.EC; -import net.sourceforge.cilib.ec.Individual; -import net.sourceforge.cilib.entity.EntityType; -import net.sourceforge.cilib.entity.Topology; +import net.sourceforge.cilib.algorithm.Algorithm; import net.sourceforge.cilib.measurement.Measurement; +import net.sourceforge.cilib.problem.InferiorFitness; +import net.sourceforge.cilib.problem.OptimisationSolution; import net.sourceforge.cilib.type.parser.DomainParser; import net.sourceforge.cilib.type.parser.ParseException; import net.sourceforge.cilib.type.types.StringType; import net.sourceforge.cilib.type.types.container.TypeList; -import net.sourceforge.cilib.type.types.container.Vector; import net.sourceforge.cilib.util.Vectors; +import org.jmock.Expectations; +import org.jmock.Mockery; +import org.jmock.integration.junit4.JMock; +import org.jmock.integration.junit4.JUnit4Mockery; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -43,20 +46,21 @@ import static org.junit.Assert.assertTrue; * * @author Gary Pampara */ +@RunWith(JMock.class) public class SolutionTest { + private Mockery mockery = new JUnit4Mockery(); @Test public void result() { - Vector target = Vectors.create(1.0); - Individual i = new Individual(); - i.getProperties().put(EntityType.CANDIDATE_SOLUTION, target); + final Algorithm algorithm = mockery.mock(Algorithm.class); + final OptimisationSolution mockSolution = new OptimisationSolution(Vectors.create(1.0), InferiorFitness.instance()); - EC ec = new EC(); - Topology<Individual> topology = (Topology<Individual>) ec.getTopology(); - topology.add(i); + mockery.checking(new Expectations() {{ + oneOf(algorithm).getBestSolution(); will(returnValue(mockSolution)); + }}); Measurement m = new Solution(); - Assert.assertEquals(m.getValue(ec).toString(), target.toString()); + Assert.assertEquals(m.getValue(algorithm).toString(), mockSolution.getPosition().toString()); } @Test -- 1.6.4 |