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(); writer = new PrintWriter(new FileWriter("test/atmsdriver/model/ldssample2.txt")); writer.println("1"); writer.println("44 0 6"); writer.println("1204390 6 5 S 7.99 5 AEROPUERTO"); writer.println("1204391 ML ML_1"); writer.println("1204392 ML ML_2"); writer.println("1204393 ML ML_3"); writer.println("1204394 ML ML_4"); writer.println("1210062 ML ML_5"); writer.println("1204384 5 5 N 7.46 4 CAPISTRANO"); writer.println("1204385 ML ML_1"); writer.println("1204386 ML ML_2"); writer.println("1204387 ML ML_3"); writer.println("1204388 ML ML_4"); writer.println("1204316 1 5 N 5.73 4 ESTRELLA1"); writer.println("1204317 ML ML_1"); writer.println("1204318 ML ML_2"); writer.println("1204319 ML ML_3"); writer.println("1204320 ML ML_4"); writer.println("1204340 3 5 N 6.47 4 SACRAMENTO"); writer.println("1204341 ML ML_1"); writer.println("1204342 ML ML_2"); writer.println("1204343 ML ML_3"); writer.println("1204344 ML ML_4"); writer.println("1204345 3 5 S 6.47 5 SACRAMENTO"); writer.println("1204346 OS OS_1"); writer.println("1204347 OS OS_2"); writer.println("1204348 OS OS_3"); writer.println("1204349 OS OS_4"); writer.println("1204350 OS OS_5"); writer.println("1211075 5 5 S 7.46 5 CAPISTRANO"); writer.println("1211069 OS OS_1"); writer.println("1211070 OS OS_2"); writer.println("1211071 OS OS_3"); writer.println("1211072 OS OS_4"); writer.println("1211073 OS OS_5"); writer.close(); writer = new PrintWriter(new FileWriter("test/atmsdriver/model/ldssample3.txt")); writer.println("1"); writer.println("44 0 6"); writer.println("1204390 6 73 N 23.9 5 BISON 2"); writer.println("1204391 ML ML_1"); writer.println("1204392 ML ML_2"); writer.println("1204393 ML ML_3"); writer.println("1204394 ML ML_4"); writer.println("1210062 ML ML_5"); writer.println("1204384 2 55 S 6.88 4 MACARTHU1"); writer.println("1204385 ML ML_1"); writer.println("1204386 ML ML_2"); writer.println("1204387 ML ML_3"); writer.println("1204388 ML ML_4"); writer.println("1204316 1 5 N 5.73 4 ESTRELLA1"); writer.println("1204317 ML ML_1"); writer.println("1204318 ML ML_2"); writer.println("1204319 ML ML_3"); writer.println("1204320 ML ML_4"); writer.println("1204340 3 5 N 6.47 4 SACRAMENTO"); writer.println("1204341 ML ML_1"); writer.println("1204342 ML ML_2"); writer.println("1204343 ML ML_3"); writer.println("1204344 ML ML_4"); writer.println("1204345 4 405 N 6.21 5 HARVARD"); writer.println("1204346 OS OS_1"); writer.println("1204347 OS OS_2"); writer.println("1204348 OS OS_3"); writer.println("1204349 OS OS_4"); writer.println("1204350 OS OS_5"); writer.println("1211075 5 405 S 6.8 5 JAMBOREE1"); writer.println("1211069 OS OS_1"); writer.println("1211070 OS OS_2"); writer.println("1211071 OS OS_3"); writer.println("1211072 OS OS_4"); writer.println("1211073 OS OS_5"); 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); path = FileSystems.getDefault().getPath("test/atmsdriver/model", "ldssample2.txt"); Files.delete(path); path = FileSystems.getDefault().getPath("test/atmsdriver/model", "ldssample3.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(); String[] resultLines = result.split("\n"); String actual = resultLines[3].substring(0,9); assertEquals(" 5 S @.-",actual); highways.applyColorToHighwayStretch(241, Station.DIRECTION.NORTH, 18.8, 0.8, 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, 18.8, 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"); JSONObject item2 = (JSONObject)array.get(1); String id2 = (String) item2.get("id"); JSONObject item3 = (JSONObject)array.get(2); String id3 = (String) item3.get("id"); assertEquals("5 N 1.26", id1); assertEquals("5 S 0.9", id2); assertEquals("5 S 1.49", id3); } public void testStationSort() throws ParseException { System.out.println("stationSort"); Highways highways = new Highways( "test/atmsdriver/model/ldssample2.txt", "localhost", 8080); String result = highways.toJson(); JSONParser parser = new JSONParser(); JSONObject obj = (JSONObject) parser.parse(result); JSONArray array = (JSONArray)obj.get("features"); JSONObject item1 = (JSONObject)array.get(0); String id1 = (String) item1.get("id"); JSONObject item2 = (JSONObject)array.get(1); String id2 = (String) item2.get("id"); JSONObject item3 = (JSONObject)array.get(2); String id3 = (String) item3.get("id"); assertEquals("5 N 5.73", id1); assertEquals("5 N 6.47", id2); assertEquals("5 N 7.46", id3); JSONObject item4 = (JSONObject)array.get(3); String id4 = (String) item4.get("id"); JSONObject item5 = (JSONObject)array.get(4); String id5 = (String) item5.get("id"); assertEquals("5 S 6.47", id4); assertEquals("5 S 7.46", id5); } public void testRouteSort() throws ParseException { System.out.println("routeSort"); Highways highways = new Highways( "test/atmsdriver/model/ldssample3.txt", "localhost", 8080); String result = highways.toJson(); JSONParser parser = new JSONParser(); JSONObject obj = (JSONObject) parser.parse(result); JSONArray array = (JSONArray)obj.get("features"); JSONObject item1 = (JSONObject)array.get(0); String id1 = (String) item1.get("id"); JSONObject item2 = (JSONObject)array.get(1); String id2 = (String) item2.get("id"); JSONObject item3 = (JSONObject)array.get(2); String id3 = (String) item3.get("id"); JSONObject item4 = (JSONObject)array.get(3); String id4 = (String) item4.get("id"); JSONObject item5 = (JSONObject)array.get(4); String id5 = (String) item5.get("id"); assertEquals("5 N 5.73", id1); assertEquals("5 N 6.47", id2); assertEquals("55 S 6.88", id3); assertEquals("73 N 23.9", id4); assertEquals("405 N 6.21", id5); } 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, 1.83, 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"; }