// Path: src/io/Parameter.java
// public class Parameter {
// 	
// 		String id;
// 		String value;
// 		String parentTag;
// 		int	   parentNumber;
// 		
// 		public Parameter(String parentTag, int parentNumber, Element el) {
// 			this.id 			= el.getAttribute("id");
// 			this.value 			= el.getAttribute("value");
// 			this.parentTag 		= parentTag;
// 			this.parentNumber 	= parentNumber;
// 		}
// 		
// 		/**
// 		 * use this constructor to make a dummy object which is used in searches ( e.g. ArrayList . contains etc)
// 		 * @param id
// 		 */
// 		public Parameter(String id) {
// 			this.id = id;
// 		}
// 		
// 		/**
// 		 * use this constructor to make simple parameters (e.g. when not configuring from XML).
// 		 * @param id
// 		 * @param value
// 		 */
// 		public Parameter(String id, String value) {
// 			this.parentTag    = "";
// 			this.parentNumber = 0;
// 			this.id 	= id;
// 			this.value 	= value;
// 		}
// 		
// 		//////////////////////////////////////////////////////////////////////////////////
// 		
// 		/**
// 		 * @return the id
// 		 */
// 		public String getId() {
// 			return id;
// 		}
// 
// 		/**
// 		 * @return the value
// 		 */
// 		public String getValue() {
// 			return value;
// 		}
// 
// 		/**
// 		 * @return the parentTag
// 		 */
// 		public String getParentTag() {
// 			return parentTag;
// 		}
// 
// 		/**
// 		 * @return the parentNumber
// 		 */
// 		public int getParentNumber() {
// 			return parentNumber;
// 		}
// 		
// 		
// 		//////////////////////////////////////////////////////////////////////////////////
// 		
// 		
// 		public String[] getNameValuePair() {
// 			String[] pair = new String[2];
// 			pair[0] = id;
// 			pair[1] = value;
// 			return pair;
// 		}
// 		
// 		//////////////////////////////////////////////////////////////////////////////////
// 		
// 		public String toString() {
// 			return (parentTag + "-" + parentNumber + "\t" + id + "\t" + value);
// 		}
// 
// 		
// 
// 		//////////////////////////////////////////////////////////////////////////////////
// 		// hash code and equals based on id only
// 		
// 		/* (non-Javadoc)
// 		 * @see java.lang.Object#hashCode()
// 		 */
// 		@Override
// 		public int hashCode() {
// 			final int prime = 31;
// 			int result = 1;
// 			result = prime * result + ((id == null) ? 0 : id.hashCode());
// 			return result;
// 		}
// 
// 		/* (non-Javadoc)
// 		 * @see java.lang.Object#equals(java.lang.Object)
// 		 */
// 		@Override
// 		public boolean equals(Object obj) {
// 			if (this == obj)
// 				return true;
// 			if (obj == null)
// 				return false;
// 			if (!(obj instanceof Parameter))
// 				return false;
// 			Parameter other = (Parameter) obj;
// 			if (id == null) {
// 				if (other.id != null)
// 					return false;
// 			} else if (!id.equals(other.id))
// 				return false;
// 			return true;
// 		}
// 
// 
// 		
// 		
// 		
// }


import io.Parameter;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
		NetworkInformation ni = new NetworkInformation(network);
		System.out.println(ni);
		
	}
	
	@Test
	public void testSpatialNetwork() {
		SpatialModelNetwork network = new SpatialModelNetwork();
		
		System.out.println("Network information (empty)");
		NetworkInformation ni = new NetworkInformation(network);
		System.out.println(ni);
		
		String fname = "test//example_UK_cities.csv";
		String delim = ",";
		network.readNodeLocationsFromFile(fname, delim);
		network.create();
		
		System.out.println("Network information (created)");
		ni = new NetworkInformation(network);
		System.out.println(ni);
		
		System.out.println("First Node:");
		LocationNetworkNode locN = (LocationNetworkNode)network.getNodes().get(0);
		System.out.println(locN.neighboursLine());
		System.out.println(locN.distancesLine());
		System.out.println(locN.weightsLine());
		System.out.println();
		
		System.out.println("Now restrict to 100km");
// Path: src/io/Parameter.java
// public class Parameter {
// 	
// 		String id;
// 		String value;
// 		String parentTag;
// 		int	   parentNumber;
// 		
// 		public Parameter(String parentTag, int parentNumber, Element el) {
// 			this.id 			= el.getAttribute("id");
// 			this.value 			= el.getAttribute("value");
// 			this.parentTag 		= parentTag;
// 			this.parentNumber 	= parentNumber;
// 		}
// 		
// 		/**
// 		 * use this constructor to make a dummy object which is used in searches ( e.g. ArrayList . contains etc)
// 		 * @param id
// 		 */
// 		public Parameter(String id) {
// 			this.id = id;
// 		}
// 		
// 		/**
// 		 * use this constructor to make simple parameters (e.g. when not configuring from XML).
// 		 * @param id
// 		 * @param value
// 		 */
// 		public Parameter(String id, String value) {
// 			this.parentTag    = "";
// 			this.parentNumber = 0;
// 			this.id 	= id;
// 			this.value 	= value;
// 		}
// 		
// 		//////////////////////////////////////////////////////////////////////////////////
// 		
// 		/**
// 		 * @return the id
// 		 */
// 		public String getId() {
// 			return id;
// 		}
// 
// 		/**
// 		 * @return the value
// 		 */
// 		public String getValue() {
// 			return value;
// 		}
// 
// 		/**
// 		 * @return the parentTag
// 		 */
// 		public String getParentTag() {
// 			return parentTag;
// 		}
// 
// 		/**
// 		 * @return the parentNumber
// 		 */
// 		public int getParentNumber() {
// 			return parentNumber;
// 		}
// 		
// 		
// 		//////////////////////////////////////////////////////////////////////////////////
// 		
// 		
// 		public String[] getNameValuePair() {
// 			String[] pair = new String[2];
// 			pair[0] = id;
// 			pair[1] = value;
// 			return pair;
// 		}
// 		
// 		//////////////////////////////////////////////////////////////////////////////////
// 		
// 		public String toString() {
// 			return (parentTag + "-" + parentNumber + "\t" + id + "\t" + value);
// 		}
// 
// 		
// 
// 		//////////////////////////////////////////////////////////////////////////////////
// 		// hash code and equals based on id only
// 		
// 		/* (non-Javadoc)
// 		 * @see java.lang.Object#hashCode()
// 		 */
// 		@Override
// 		public int hashCode() {
// 			final int prime = 31;
// 			int result = 1;
// 			result = prime * result + ((id == null) ? 0 : id.hashCode());
// 			return result;
// 		}
// 
// 		/* (non-Javadoc)
// 		 * @see java.lang.Object#equals(java.lang.Object)
// 		 */
// 		@Override
// 		public boolean equals(Object obj) {
// 			if (this == obj)
// 				return true;
// 			if (obj == null)
// 				return false;
// 			if (!(obj instanceof Parameter))
// 				return false;
// 			Parameter other = (Parameter) obj;
// 			if (id == null) {
// 				if (other.id != null)
// 					return false;
// 			} else if (!id.equals(other.id))
// 				return false;
// 			return true;
// 		}
// 
// 
// 		
// 		
// 		
// }


// Path: src/networks/NetworkTest.java
import io.Parameter;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

		NetworkInformation ni = new NetworkInformation(network);
		System.out.println(ni);
		
	}
	
	@Test
	public void testSpatialNetwork() {
		SpatialModelNetwork network = new SpatialModelNetwork();
		
		System.out.println("Network information (empty)");
		NetworkInformation ni = new NetworkInformation(network);
		System.out.println(ni);
		
		String fname = "test//example_UK_cities.csv";
		String delim = ",";
		network.readNodeLocationsFromFile(fname, delim);
		network.create();
		
		System.out.println("Network information (created)");
		ni = new NetworkInformation(network);
		System.out.println(ni);
		
		System.out.println("First Node:");
		LocationNetworkNode locN = (LocationNetworkNode)network.getNodes().get(0);
		System.out.println(locN.neighboursLine());
		System.out.println(locN.distancesLine());
		System.out.println(locN.weightsLine());
		System.out.println();
		
		System.out.println("Now restrict to 100km");
		network.setParameter(new Parameter("distanceThreshold","100"));