package atmsdriver.model; import archive.ATMSDriver; import atmsdriver.model.LoopDetector.DOTCOLOR; import atmsdriver.model.Station.DIRECTION; import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import junit.framework.TestCase; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; /** * * @author jdalbey */ public class HighwaysTest extends TestCase { public HighwaysTest(String testName) { super(testName); } @Override protected void setUp() throws Exception { super.setUp(); PrintWriter writer = null; try { writer = new PrintWriter(new FileWriter("test/atmsdriver/model/ldssample.txt")); writer.println("2"); writer.println("32 0 2"); writer.println("1210831 1 5 S 0.9 4 CALAFIA"); writer.println("1210832 ML ML_1"); writer.println("1210833 ML ML_2"); writer.println("1210834 ML ML_3"); writer.println("1210835 ML ML_4"); writer.println("1210845 2 5 S 1.49 4 EL CAMINO REAL"); writer.println("1210846 ML ML_1"); writer.println("1210847 ML ML_2"); writer.println("1210848 ML ML_3"); writer.println("1210849 ML ML_4"); writer.println("74 0 1"); writer.println("1204203 2 5 N 1.26 4 MAGDALENA"); writer.println("1204212 ML ML_1"); writer.println("1204213 ML ML_2"); writer.println("1204214 ML ML_3"); writer.println("1204215 ML ML_4"); writer.close(); } catch (Exception e) { e.printStackTrace(); } } @Override protected void tearDown() throws Exception { super.tearDown(); Path path = FileSystems.getDefault().getPath("test/atmsdriver/model", "ldssample.txt"); Files.delete(path); } public void testFindStation() { System.out.println("test FindStation()"); Highways highways = new Highways( "test/atmsdriver/model/ldssample.txt", "localhost", 8080); assertTrue(null != highways.findStation(5, DIRECTION.SOUTH, 0.9)); assertTrue(null != highways.findStation(5, DIRECTION.SOUTH, 1.49)); assertTrue(null != highways.findStation(5, DIRECTION.NORTH, 1.26)); assertTrue(null == highways.findStation(5, DIRECTION.SOUTH, 1.1)); } /** * Test of toString method */ public void testToString() { System.out.println("toString"); Highways highways = new Highways( "config/vds_data/highways_fullmap.txt", "localhost", 8080); highways.getHighwayByRouteNumber(5).stations.get(0).loops.get(0).vol = 1; String result = highways.toString(); System.out.println(result); String[] resultLines = result.split("\n"); String actual = resultLines[3].substring(0,9); assertEquals(" 5 S @.-",actual); highways.applyColorToHighwayStretch(241, Station.DIRECTION.NORTH, 18.08, 1.0, LoopDetector.DOTCOLOR.RED); result = highways.toString(); System.out.println("bravo:\n"+result); assertEquals("241 N -@.@@.-",result.substring(0,13)); highways.applyColorToHighwayStretch(241, Station.DIRECTION.SOUTH, 20.13, 2.0, LoopDetector.DOTCOLOR.YELLOW); result = highways.toString(); System.out.println("charly:\n"+result); resultLines = result.split("\n"); actual = resultLines[1].substring(0,16); assertEquals("241 S ..+..+.++.",actual); } public void testToJson() throws ParseException { System.out.println("toJson"); Highways highways = new Highways( "test/atmsdriver/model/ldssample.txt", "localhost", 8080); String result = highways.toJson(); System.out.println(result); assertTrue(result.indexOf("33.416348") > 0); JSONParser parser = new JSONParser(); JSONObject obj = (JSONObject) parser.parse(result); System.out.println(obj); JSONArray array = (JSONArray)obj.get("features"); JSONObject item1 = (JSONObject)array.get(0); String id1 = (String) item1.get("id"); assertEquals("5 S 0.9", id1); JSONObject item2 = (JSONObject)array.get(1); String id2 = (String) item2.get("id"); assertEquals("5 N 1.26", id2); JSONObject item3 = (JSONObject)array.get(2); String id3 = (String) item3.get("id"); assertEquals("5 S 1.49", id3); } public void testApplyColor() { System.out.println("apply color"); Highways highways = new Highways( "test/atmsdriver/model/ldssample.txt", "localhost", 8080); highways.applyColorToHighwayStretch(5, Station.DIRECTION.SOUTH, 0.9, 2.0, LoopDetector.DOTCOLOR.RED); Station target = highways.findStation(5, DIRECTION.SOUTH, 0.9); assertEquals('@',target.getColor()); String result = highways.toString(); System.out.println("applyto:\n"+result); assertEquals("5 N .-.\n 5 S @.-", result.trim()); highways.applyColorToHighwayStretch(5, Station.DIRECTION.SOUTH, 1.49, 2.0, LoopDetector.DOTCOLOR.YELLOW); result = highways.toString(); assertEquals("5 N .-.\n 5 S +.+", result.trim()); highways.applyColorToHighwayStretch(5, Station.DIRECTION.SOUTH, 1.49, 0.59, LoopDetector.DOTCOLOR.GREEN); result = highways.toString(); assertEquals("5 N .-.\n 5 S -.-", result.trim()); highways.applyColorToHighwayStretch(5, Station.DIRECTION.NORTH, 0.1, 2.0, LoopDetector.DOTCOLOR.RED); result = highways.toString(); assertEquals("5 N .@.\n 5 S -.-", result.trim()); //highways.applyColorToHighwayStretch(241, Station.DIRECTION.NORTH, 20.13, 4.0, LoopDetector.DOTCOLOR.RED); //result = highways.toString(); //assertTrue(result.length()>0); //"241 N @@ @@@@@-",result.substring(0,15)); } public void testToCondensedFormat() { System.out.println("ToCondensedFormat"); Highways highways = new Highways( "test/atmsdriver/model/ldssample.txt", "localhost", 8080); String actualCondensedFormatMeta = highways.toCondensedFormat(true); String actualCondensedFormatFEP = highways.toCondensedFormat(false); System.out.println(actualCondensedFormatMeta); assertEquals(expectedCondensedFormatFEP, actualCondensedFormatFEP); assertEquals(expectedCondensedFormatMeta, actualCondensedFormatMeta); } String expectedCondensedFormatMeta = "2\n" + "32 0 2\n" + "1210831 1 5 S 0.9 4 CALAFIA\n" + "1210832 ML ML_1\n" + "1210833 ML ML_2\n" + "1210834 ML ML_3\n" + "1210835 ML ML_4\n" + "1210845 2 5 S 1.49 4 EL CAMINO REAL\n" + "1210846 ML ML_1\n" + "1210847 ML ML_2\n" + "1210848 ML ML_3\n" + "1210849 ML ML_4\n" + "74 0 1\n" + "1204203 2 5 N 1.26 4 MAGDALENA\n" + "1204212 ML ML_1\n" + "1204213 ML ML_2\n" + "1204214 ML ML_3\n" + "1204215 ML ML_4\n"; String expectedCondensedFormatFEP = "2\n" + "32 0 2\n" + "1210831 1 5 S 0.9 4 \n" + "1210832 0.0 0 ML_1\n" + "1210833 0.0 0 ML_2\n" + "1210834 0.0 0 ML_3\n" + "1210835 0.0 0 ML_4\n" + "1210845 2 5 S 1.49 4 \n" + "1210846 0.0 0 ML_1\n" + "1210847 0.0 0 ML_2\n" + "1210848 0.0 0 ML_3\n" + "1210849 0.0 0 ML_4\n" + "74 0 1\n" + "1204203 2 5 N 1.26 4 \n" + "1204212 0.0 0 ML_1\n" + "1204213 0.0 0 ML_2\n" + "1204214 0.0 0 ML_3\n" + "1204215 0.0 0 ML_4\n"; }