From 90aed14ddc9b5f7fd3a24470fd98591bacf243d2 Mon Sep 17 00:00:00 2001 From: Haoming Yin Date: Mon, 6 Mar 2017 21:38:25 +1300 Subject: [PATCH 1/3] Updated test file for unit test - added race size represented the number of teams who would compete in a race - changed teams to an array containing maps of each team within team name and boat velocity #test #story[8] #story[6] --- src/test/java/seng302/valid.json | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/test/java/seng302/valid.json b/src/test/java/seng302/valid.json index 21b0c2dc..a6246d61 100644 --- a/src/test/java/seng302/valid.json +++ b/src/test/java/seng302/valid.json @@ -1,5 +1,13 @@ { - "time-scale": 100, - "race-name": "IDK", - "teams":["team1","team2","team3"] -} \ No newline at end of file + "race-name": "AC35", + "time-scale": 1, + "race-size": 2, + "teams": [ + {"team-name": "Oracle Team USA", "velocity": 20.9}, + {"team-name": "Artemis Racing", "velocity": 18.3}, + {"team-name": "Emirates Team New Zealand", "velocity": 21.5}, + {"team-name": "Groupama Team France","velocity": 19.9}, + {"team-name": "Land Rover BAR", "velocity": 17.6}, + {"team-name": "SoftBank Team Japan", "velocity": 16.6} + ] +} From c9b0942e0750f01d82ad1b7f17e8e4a4ff825238 Mon Sep 17 00:00:00 2001 From: Haoming Yin Date: Mon, 6 Mar 2017 21:39:53 +1300 Subject: [PATCH 2/3] Updated unit test for future FileParser - changed valid file test case #test --- src/test/java/seng302/FileParserTest.java | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/test/java/seng302/FileParserTest.java b/src/test/java/seng302/FileParserTest.java index 05c71a9e..34d5c4af 100644 --- a/src/test/java/seng302/FileParserTest.java +++ b/src/test/java/seng302/FileParserTest.java @@ -27,13 +27,12 @@ public class FileParserTest { public void readValidFile() throws Exception{ FileParser fileParser = new FileParser("src/test/java/seng302/valid.json"); - assertEquals(fileParser.getRaceName(), "IDK"); + assertEquals("AC35", fileParser.getRaceName()); - ArrayList teams = new ArrayList<>(); - teams.add("team1"); - teams.add("team2"); - teams.add("team3"); - assertTrue(teams.equals(fileParser.getTeams())); + assertEquals("Oracle Team USA", fileParser.getTeams().get(0).get("team-name")); + assertEquals(20.9, fileParser.getTeams().get(0).get("velocity")); + assertEquals(2, fileParser.getRaceSize()); + assertEquals(6, fileParser.getTotalNumberOfTeams()); } /* @@ -41,13 +40,13 @@ public class FileParserTest { variable name. */ @Test - public void readInvaldFile() throws Exception { + public void readInvalidFile() throws Exception { FileParser fileParser = new FileParser("src/test/java/seng302/invalid.json"); - assertEquals(fileParser.getRaceName(), null); - assertEquals(fileParser.getTeams(), null); - assertEquals(fileParser.getTimeScale(), -1); - assertEquals(fileParser.getTeams(), null); + assertEquals(null, fileParser.getRaceName()); + assertEquals(null, fileParser.getTeams()); + assertEquals(-1, fileParser.getTimeScale()); + assertEquals(null,fileParser.getTeams()); } } \ No newline at end of file From 85b804722913e24b8cab0625afd1ec9090314d93 Mon Sep 17 00:00:00 2001 From: Haoming Yin Date: Mon, 6 Mar 2017 21:44:31 +1300 Subject: [PATCH 3/3] Updated FileParser to read team name, boat velocity, and race size. - minor code rearrange for readFile() - changed getTeam() to read to an array of team maps, where map contains team name and boat velocity - added getTotalNumberOfTeams() to get the total number of teams in file - added getRaceSize to get the the number of boat competing in a race #implement #story[6] #story[8] --- src/main/java/seng302/FileParser.java | 42 +++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/src/main/java/seng302/FileParser.java b/src/main/java/seng302/FileParser.java index 2fe26d0f..54586ad0 100644 --- a/src/main/java/seng302/FileParser.java +++ b/src/main/java/seng302/FileParser.java @@ -8,6 +8,7 @@ import java.io.FileReader; import java.io.IOException; import java.io.FileNotFoundException; import java.util.ArrayList; +import java.util.Map; /** @@ -36,10 +37,8 @@ public class FileParser { private void readFile() throws FileNotFoundException{ JSONParser parser = new JSONParser(); try { - Object obj = parser.parse(new FileReader(filePath)); + this.content = (JSONObject) parser.parse(new FileReader(filePath)); - JSONObject jsonObject = (JSONObject) obj; - this.content = jsonObject; } catch (FileNotFoundException e) { throw e; } catch (IOException e) { @@ -54,6 +53,7 @@ public class FileParser { * @return long time scale. -1 if parameter is invalid (eg. scale is * negative number, or containing non numeric character) or cannot be found. */ + @SuppressWarnings("unchecked") public long getTimeScale() { try { long timeScale = (long) this.content.get("time-scale"); @@ -68,6 +68,7 @@ public class FileParser { * @return a string of race name. null if race name is invalid or cannot * be found. */ + @SuppressWarnings("unchecked") public String getRaceName() { try { return (String) this.content.get("race-name"); @@ -81,12 +82,43 @@ public class FileParser { * @return an ArrayList containing strings of team names. null if teams * setting is invalid or there is no team. */ - public ArrayList getTeams() { + @SuppressWarnings("unchecked") + public ArrayList> getTeams() { try { - return (ArrayList) this.content.get("teams"); + return (ArrayList>) this.content.get("teams"); } catch (Exception e) { return null; } } + /** + * Gets the total number of teams. + * @return the number of teams. 0 if no teams or anything goes wrong. + */ + @SuppressWarnings("unchecked") + public long getTotalNumberOfTeams() { + ArrayList> teams = getTeams(); + try { + return teams.size(); + } catch (Exception e) { + return 0; + } + } + + /** + * Gets the number of boats that would compete during a race. Returns the + * total number of race size if parameter is invalid or cannot be found. + * @return an int of the race size. + */ + @SuppressWarnings("unchecked") + public long getRaceSize() { + long totalTeams = this.getTotalNumberOfTeams(); + try { + long raceSize = (long) this.content.get("race-size"); + return raceSize >= 0 && raceSize <= totalTeams? raceSize : totalTeams; + } catch (Exception e) { + e.printStackTrace(); + return totalTeams; + } + } } \ No newline at end of file