From 5d61ef8545f39ac6dd3c1a7d9b1c7b16b9bfe080 Mon Sep 17 00:00:00 2001 From: Nikolaus Krismer <niko@krismer.de> Date: Tue, 18 Mar 2014 12:16:20 +0100 Subject: [PATCH] minor code refactoring (added algorithm helper class to remove duplicated code) --- .../isochrone/network/AlgorithmHelper.java | 39 +++++++++++++++++++ .../inf/isochrone/network/AlgorithmTest.java | 29 +++----------- .../inf/isochrone/network/RuntimeComplex.java | 21 +--------- .../inf/isochrone/network/RuntimeSimple.java | 22 +---------- 4 files changed, 46 insertions(+), 65 deletions(-) create mode 100644 src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java diff --git a/src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java new file mode 100644 index 00000000..6cddf3e3 --- /dev/null +++ b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java @@ -0,0 +1,39 @@ +package it.unibz.inf.isochrone.network; + +import it.unibz.inf.isochrone.algorithm.Isochrone; +import it.unibz.inf.isochrone.config.ConfigDataset; +import it.unibz.inf.isochrone.util.Query; + +import java.lang.reflect.InvocationTargetException; + +import org.testng.Assert; + +final class AlgorithmHelper { + + // Constructor + + private AlgorithmHelper() { + } + + // Public static methods + + public static void run(final Class<? extends Isochrone> algorithmClass, final TestParameters params) { + run(algorithmClass, params, true); + } + + public static void run(final Class<? extends Isochrone> algorithmClass, final TestParameters params, final boolean expireNodes) { + Query query = new Query(params.getDirection(), params.getWalkingSpeed(), params.getRuntime(), params.getDate(), expireNodes, params.getMode()); + query.setNodes(params.getNodeId()); + + Isochrone algorithm = null; + try { + algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(params.getDataset(), query); + } catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { + Assert.fail(e.getMessage()); + } + + algorithm.compute(); + } + + +} diff --git a/src/test/java/it/unibz/inf/isochrone/network/AlgorithmTest.java b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmTest.java index c97ec44a..563dfc5c 100644 --- a/src/test/java/it/unibz/inf/isochrone/network/AlgorithmTest.java +++ b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmTest.java @@ -1,20 +1,15 @@ package it.unibz.inf.isochrone.network; -import it.unibz.inf.isochrone.algorithm.Isochrone; import it.unibz.inf.isochrone.algorithm.MDijkstra; import it.unibz.inf.isochrone.algorithm.MineX; import it.unibz.inf.isochrone.algorithm.MrneX; -import it.unibz.inf.isochrone.config.ConfigDataset; import it.unibz.inf.isochrone.util.EnumContainer.Dataset; import it.unibz.inf.isochrone.util.EnumContainer.Direction; import it.unibz.inf.isochrone.util.EnumContainer.Mode; -import it.unibz.inf.isochrone.util.Query; -import java.lang.reflect.InvocationTargetException; import java.util.Calendar; import java.util.GregorianCalendar; -import org.testng.Assert; import org.testng.annotations.Test; public class AlgorithmTest { @@ -26,37 +21,23 @@ public class AlgorithmTest { @Test public void testMDijkstra() { - run(MDijkstra.class, false); + AlgorithmHelper.run(MDijkstra.class, getParams(), false); } @Test public void testMineX() { - run(MineX.class); + AlgorithmHelper.run(MineX.class, getParams()); } @Test public void testMrneX() { - run(MrneX.class); + AlgorithmHelper.run(MrneX.class, getParams()); } // Private methods - private static void run(final Class<? extends Isochrone> algorithmClass) { - run(algorithmClass, true); - } - - private static void run(final Class<? extends Isochrone> algorithmClass, final boolean expireNodes) { - final Query query = new Query(Direction.INCOMING, WALKING_SPEED, DURATION, TIME, expireNodes, Mode.MULTIMODAL); - query.setNodes(NODE_ID); - - Isochrone algorithm = null; - try { - algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(ConfigDataset.getInstance(TEST_DATASET), query); - } catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { - Assert.fail(e.getLocalizedMessage()); - } - - algorithm.compute(); + private static TestParameters getParams() { + return new TestParameters(WALKING_SPEED, DURATION, TIME, Mode.MULTIMODAL, NODE_ID, TEST_DATASET, Integer.MAX_VALUE, Direction.INCOMING); } } diff --git a/src/test/java/it/unibz/inf/isochrone/network/RuntimeComplex.java b/src/test/java/it/unibz/inf/isochrone/network/RuntimeComplex.java index b3e96a34..7afdf0ba 100644 --- a/src/test/java/it/unibz/inf/isochrone/network/RuntimeComplex.java +++ b/src/test/java/it/unibz/inf/isochrone/network/RuntimeComplex.java @@ -4,17 +4,14 @@ import it.unibz.inf.isochrone.algorithm.Isochrone; import it.unibz.inf.isochrone.algorithm.MDijkstra; import it.unibz.inf.isochrone.algorithm.MineX; import it.unibz.inf.isochrone.algorithm.MrneX; -import it.unibz.inf.isochrone.config.ConfigDataset; import it.unibz.inf.isochrone.util.EnumContainer.Dataset; import it.unibz.inf.isochrone.util.EnumContainer.Direction; import it.unibz.inf.isochrone.util.EnumContainer.Mode; -import it.unibz.inf.isochrone.util.Query; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.PrintWriter; -import java.lang.reflect.InvocationTargetException; import java.util.Calendar; import java.util.Collection; import java.util.GregorianCalendar; @@ -27,7 +24,6 @@ import java.util.TreeSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -40,7 +36,6 @@ import org.testng.annotations.Test; */ public final class RuntimeComplex { private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeComplex.class); - private static final Dataset TEST_DATASET = Dataset.BZ; private static final int REPEAT_COUNT = 5; private static final int BZ_NODE_ID = 2000500; private static final Calendar BZ_TIME = new GregorianCalendar(2011, 5, 10, 10, 10, 0); @@ -142,7 +137,7 @@ public final class RuntimeComplex { final Collection<TestParameters> allParams = datasets.values(); for (final TestParameters params : allParams) { long startTime = Calendar.getInstance().getTimeInMillis(); - runWithParams(clazz, params); + AlgorithmHelper.run(clazz, params); long runTime = Calendar.getInstance().getTimeInMillis() - startTime; LOGGER.debug(" - runtime \"" + params.getRuntime() + "\": " + runTime + "msec"); @@ -169,20 +164,6 @@ public final class RuntimeComplex { } } - private static void runWithParams(final Class<? extends Isochrone> algorithmClass, final TestParameters params) { - Query query = new Query(params.getDirection(), params.getWalkingSpeed(), params.getRuntime(), params.getDate(), true, params.getMode()); - query.setNodes(params.getNodeId()); - - Isochrone algorithm = null; - try { - algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(ConfigDataset.getInstance(TEST_DATASET), query); - } catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { - Assert.fail(e.getMessage()); - } - - algorithm.compute(); - } - private static void writeMapToXML(final File file, final Set<Entry<String, Map<String, Long>>> resultSet, final int repeatCount) { BufferedWriter fw = null; try { diff --git a/src/test/java/it/unibz/inf/isochrone/network/RuntimeSimple.java b/src/test/java/it/unibz/inf/isochrone/network/RuntimeSimple.java index 031194b4..5a2a9b4b 100644 --- a/src/test/java/it/unibz/inf/isochrone/network/RuntimeSimple.java +++ b/src/test/java/it/unibz/inf/isochrone/network/RuntimeSimple.java @@ -4,16 +4,11 @@ import it.unibz.inf.isochrone.algorithm.Isochrone; import it.unibz.inf.isochrone.algorithm.MDijkstra; import it.unibz.inf.isochrone.algorithm.MineX; import it.unibz.inf.isochrone.algorithm.MrneX; -import it.unibz.inf.isochrone.config.ConfigDataset; -import it.unibz.inf.isochrone.util.EnumContainer.Dataset; -import it.unibz.inf.isochrone.util.Query; -import java.lang.reflect.InvocationTargetException; import java.util.Calendar; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.Assert; import org.testng.annotations.Test; /** @@ -26,7 +21,6 @@ import org.testng.annotations.Test; */ public final class RuntimeSimple { private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeSimple.class); - private static final Dataset TEST_DATASET = Dataset.BZ; @Test public void runMDijkstra() { @@ -49,24 +43,10 @@ public final class RuntimeSimple { LOGGER.info("Executing \"" + algorithmClass.getSimpleName() + "\""); final TestParameters params = new TestParameters(); long startTime = Calendar.getInstance().getTimeInMillis(); - runWithParams(algorithmClass, params); + AlgorithmHelper.run(algorithmClass, params); long runTime = Calendar.getInstance().getTimeInMillis() - startTime; LOGGER.info(" - runtime: \"" + params.getRuntime() + "\": " + runTime + "msec"); LOGGER.info("-----------------------------"); } - private static void runWithParams(final Class<? extends Isochrone> algorithmClass, final TestParameters params) { - Query query = new Query(params.getDirection(), params.getWalkingSpeed(), params.getRuntime(), params.getDate(), true, params.getMode()); - query.setNodes(params.getNodeId()); - - Isochrone algorithm = null; - try { - algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(ConfigDataset.getInstance(TEST_DATASET), query); - } catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { - Assert.fail(e.getLocalizedMessage()); - } - - algorithm.compute(); - } - } -- GitLab