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