From 0fd4de7ec7e074d800e8ddca9dafee01501cb0c7 Mon Sep 17 00:00:00 2001 From: David Wu Date: Tue, 25 Apr 2017 12:00:44 +1200 Subject: [PATCH] Fixed previously broken tests due to refactoring app. -ConstantVelocityRace doesn't exist anymore so tests had to be change to compensate for this. -Boat in race had to be change due to the addition of the sourceID for each boat. #story[778] --- .../java/seng302/Model/BoatInRaceTest.java | 13 +- .../src/test/java/seng302/Model/RaceTest.java | 324 ++++++++++-------- 2 files changed, 179 insertions(+), 158 deletions(-) diff --git a/mock/src/test/java/seng302/Model/BoatInRaceTest.java b/mock/src/test/java/seng302/Model/BoatInRaceTest.java index 31ed00ca..dfbd4b04 100644 --- a/mock/src/test/java/seng302/Model/BoatInRaceTest.java +++ b/mock/src/test/java/seng302/Model/BoatInRaceTest.java @@ -13,11 +13,11 @@ import static junit.framework.TestCase.assertTrue; /** * Created by esa46 on 22/03/17. */ -public class BoatInRaceTest {/* +public class BoatInRaceTest { private GPSCoordinate ORIGIN_COORDS = new GPSCoordinate(0, 0); - private BoatInRace TEST_BOAT = new BoatInRace("Test", 1, Color.ALICEBLUE, "tt"); + private BoatInRace TEST_BOAT = new BoatInRace("Test", 1, Color.ALICEBLUE, "tt", 1); @Test @@ -102,7 +102,7 @@ public class BoatInRaceTest {/* @Test public void createNewBoatCratesInstanceOfSuperClass() { - BoatInRace testBoat = new BoatInRace("Boat", 20, Color.ALICEBLUE, "tt"); + BoatInRace testBoat = new BoatInRace("Boat", 20, Color.ALICEBLUE, "tt", 1); testBoat.setName("Name can change"); assertTrue(testBoat instanceof Boat); assertTrue(testBoat.getCurrentLeg() == null); @@ -112,13 +112,14 @@ public class BoatInRaceTest {/* assertTrue(testBoat.getVelocityProp().toString().contains("20")); assertTrue(testBoat.getAbbrev().equals("tt")); assertTrue(testBoat.getColour().equals(Color.ALICEBLUE)); + assertEquals(testBoat.getSourceID(), 1); assertFalse(testBoat.isFinished()); } @Test public void getWakeAtProperHeading() throws Exception { - BoatInRace boat = new BoatInRace("Test", 1, Color.ALICEBLUE, "tt"); + BoatInRace boat = new BoatInRace("Test", 1, Color.ALICEBLUE, "tt", 1); // Construct leg of 0 degrees Marker startMarker = new Marker(ORIGIN_COORDS); @@ -139,7 +140,7 @@ public class BoatInRaceTest {/* @Test public void getWakeProportionalToVelocity() throws Exception { - BoatInRace boat = new BoatInRace("Test", 10, Color.ALICEBLUE, "tt"); + BoatInRace boat = new BoatInRace("Test", 10, Color.ALICEBLUE, "tt", 1); // Construct leg of 0 degrees at 0 N Marker startMarker = new Marker(ORIGIN_COORDS); @@ -154,5 +155,5 @@ public class BoatInRaceTest {/* // Latitude of endpoint at 20 kn should be twice endpoint at 10 kn boat.setVelocity(20); assertEquals(2*endpointAt10Kn, boat.getWake().getLatitude(), 1e-8); - }*/ + } } \ No newline at end of file diff --git a/mock/src/test/java/seng302/Model/RaceTest.java b/mock/src/test/java/seng302/Model/RaceTest.java index 8e3d3769..236e2211 100644 --- a/mock/src/test/java/seng302/Model/RaceTest.java +++ b/mock/src/test/java/seng302/Model/RaceTest.java @@ -7,6 +7,7 @@ import seng302.GPSCoordinate; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -18,156 +19,175 @@ public class RaceTest { Leg START_LEG = new Leg("Start", new Marker(new GPSCoordinate(0, 0)), new Marker(new GPSCoordinate(1, 1)), 0); Leg FINISH_LEG = new Leg("Finish", new Marker(new GPSCoordinate(1, 1)), new Marker(new GPSCoordinate(2, 2)), 0); -// -// @Ignore -// @Test -// public void timerCanBeDisabled() { -// BoatInRace boat1 = new BoatInRace("Test 1", 10000, Color.ALICEBLUE, "t1"); -// BoatInRace boat2 = new BoatInRace("Test 2", 10000, Color.BURLYWOOD, "t2"); -// BoatInRace[] boats = new BoatInRace[]{boat1, boat2}; -// -// ArrayList legs = new ArrayList<>(); -// legs.add(START_LEG); legs.add(FINISH_LEG); -// -// ConstantVelocityRace race = new ConstantVelocityRace(boats, legs, null, 5); -// race.disableTimer(); -// race.setDnfChance(0); -// long timeStarted = System.currentTimeMillis(); -// race.run(); -// -// assertTrue(System.currentTimeMillis() - timeStarted < 4000); -// } -// -// @Test -// public void checkPositionUpdatesNumberFinishedBoats() { -// -// BoatInRace finishedBoat = new BoatInRace("Test", 1000, Color.ALICEBLUE, "tt"); -// finishedBoat.setDistanceTravelledInLeg(500); -// -// finishedBoat.setCurrentLeg(FINISH_LEG); -// -// ArrayList legs = new ArrayList<>(); -// legs.add(FINISH_LEG); -// -// ConstantVelocityRace race = new ConstantVelocityRace(new BoatInRace[1], legs, null, 1); -// race.setDnfChance(0); -// assertEquals(race.boatsFinished, 0); -// -// -// race.checkPosition(finishedBoat, 100000); -// assertEquals(race.boatsFinished, 1); -// assertEquals(finishedBoat.getTimeFinished(), 100000); -// } -// -// @Test -// public void checkPositionDoesntUpdateNumberFinishedBoats() { -// -// BoatInRace unFinishedBoat = new BoatInRace("Test", 10, Color.ALICEBLUE, "tt"); -// unFinishedBoat.setDistanceTravelledInLeg(0); -// -// unFinishedBoat.setCurrentLeg(FINISH_LEG); -// -// ArrayList legs = new ArrayList<>(); -// legs.add(FINISH_LEG); -// -// ConstantVelocityRace race = new ConstantVelocityRace(new BoatInRace[1], legs, null, 1); -// race.setDnfChance(0); -// assertEquals(race.boatsFinished, 0); -// -// race.checkPosition(unFinishedBoat, 100); -// assertEquals(race.boatsFinished, 0); -// } -// -// @Test -// public void distanceTravelledBeforeUpdatingLegIsRetained() { -// -// ArrayList legs = new ArrayList<>(); -// -// -// legs.add(START_LEG); -// legs.add(FINISH_LEG); -// -// ConstantVelocityRace race = new ConstantVelocityRace(new BoatInRace[1], legs, null, 1); -// race.setDnfChance(0); -// -// BoatInRace unFinishedBoat = new BoatInRace("Test", 10, Color.ALICEBLUE, "tt"); -// unFinishedBoat.setDistanceTravelledInLeg(100); -// unFinishedBoat.setCurrentLeg(START_LEG); -// -// race.checkPosition(unFinishedBoat, 100); -// assertEquals(unFinishedBoat.getCurrentLeg().getName(), "Finish"); -// assertTrue(unFinishedBoat.getDistanceTravelledInLeg() > 0); -// assertTrue(unFinishedBoat.getDistanceTravelledInLeg() < 100); -// -// } -// -// /*@Test -// -// //Test temporarily removed as countdown timer now uses animation timer -// -// public void timerDelaysByHalfSecond() { -// -// ArrayList legs = new ArrayList<>(); -// legs.add(START_LEG); -// -// ConstantVelocityRace race = new ConstantVelocityRace(new BoatInRace[1], legs, null, 1); -// race.PRERACE_TIME = 500; -// -// long timeStarted = System.currentTimeMillis(); -// race.countdownTimer(); -// -// //assertTrue(System.currentTimeMillis() - timeStarted > 500); -// System.out.println(System.currentTimeMillis() - timeStarted); -// -// }*/ -// -// @Test -// public void scalerScalesVelocityCorrectly() { -// -// int scaleFactor = 3; -// float vel1 = 0; -// float vel2 = (float) 1.999; -// float vel3 = (float) 32.5; -// float vel4 = 500; -// BoatInRace boat1 = new BoatInRace("test", vel1, Color.ALICEBLUE, "tt"); -// BoatInRace boat2 = new BoatInRace("test", vel2, Color.ALICEBLUE, "tt"); -// BoatInRace boat3 = new BoatInRace("test", vel3, Color.ALICEBLUE, "tt"); -// BoatInRace boat4 = new BoatInRace("test", vel4, Color.ALICEBLUE, "tt"); -// BoatInRace[] boats = new BoatInRace[]{boat1, boat2, boat3, boat4}; -// -// ArrayList legs = new ArrayList<>(); -// legs.add(START_LEG); -// -// ConstantVelocityRace race = new ConstantVelocityRace(boats, legs, null, scaleFactor); -// race.setDnfChance(0); -// -// assertEquals(race.getStartingBoats().get(0).getScaledVelocity(), vel1 * scaleFactor, 1e-6); -// assertEquals(race.getStartingBoats().get(1).getScaledVelocity(), vel2 * scaleFactor, 1e-6); -// assertEquals(race.getStartingBoats().get(2).getScaledVelocity(), vel3 * scaleFactor, 1e-6); -// assertEquals(race.getStartingBoats().get(3).getScaledVelocity(), vel4 * scaleFactor, 1e-6); -// } -// -// @Test -// public void scalerScalesRaceClockTo1MinCorrectly() { -// int scaleFactor = 10; -// -// ArrayList legs = new ArrayList<>(); -// legs.add(START_LEG); -// -// ConstantVelocityRace race = new ConstantVelocityRace(new BoatInRace[5], legs, null, scaleFactor); -// race.totalTimeElapsed = 6000; //6 seconds -// assertTrue(race.calcTimer().equals("Race clock: 00:01:00")); -// } -// -// @Test -// public void scalerScalesRaceClockHoursMinutesAndSecondsCorrectly() { -// int scaleFactor = 3; -// ArrayList legs = new ArrayList<>(); -// legs.add(START_LEG); -// -// ConstantVelocityRace race = new ConstantVelocityRace(new BoatInRace[5], legs, null, scaleFactor); -// race.totalTimeElapsed = 3213000; -// assertTrue(race.calcTimer().equals("Race clock: 02:40:39")); -// -// } + + @Ignore + @Test + public void timerCanBeDisabled() { + BoatInRace boat1 = new BoatInRace("Test 1", 10000, Color.ALICEBLUE, "t1", 1); + BoatInRace boat2 = new BoatInRace("Test 2", 10000, Color.BURLYWOOD, "t2", 2); + //BoatInRace[] boats = new BoatInRace[]{boat1, boat2}; + List boats = new ArrayList<>(); + boats.add(boat1); + boats.add(boat2); + + ArrayList legs = new ArrayList<>(); + legs.add(START_LEG); legs.add(FINISH_LEG); + + Race race = new Race(boats, legs, 5); + race.setDnfChance(0); + long timeStarted = System.currentTimeMillis(); + race.run(); + assertTrue(System.currentTimeMillis() - timeStarted < 4000); + } + + @Test + public void checkPositionUpdatesNumberFinishedBoats() { + + BoatInRace finishedBoat = new BoatInRace("Test", 1000, Color.ALICEBLUE, "tt", 1); + finishedBoat.setDistanceTravelledInLeg(500); + + finishedBoat.setCurrentLeg(FINISH_LEG); + + ArrayList boats = new ArrayList<>(); + boats.add(finishedBoat); + + ArrayList legs = new ArrayList<>(); + legs.add(FINISH_LEG); + + Race race = new Race(boats, legs, 1); + race.setDnfChance(0); + assertEquals(race.boatsFinished, 0); + + + race.checkPosition(finishedBoat, 100000); + assertEquals(race.boatsFinished, 1); + assertEquals(finishedBoat.getTimeFinished(), 100000); + } + + @Test + public void checkPositionDoesntUpdateNumberFinishedBoats() { + + BoatInRace unFinishedBoat = new BoatInRace("Test", 10, Color.ALICEBLUE, "tt", 1); + unFinishedBoat.setDistanceTravelledInLeg(0); + + unFinishedBoat.setCurrentLeg(FINISH_LEG); + + ArrayList boats = new ArrayList<>(); + boats.add(unFinishedBoat); + + ArrayList legs = new ArrayList<>(); + legs.add(FINISH_LEG); + + Race race = new Race(boats, legs, 1); + race.setDnfChance(0); + assertEquals(race.boatsFinished, 0); + + race.checkPosition(unFinishedBoat, 100); + assertEquals(race.boatsFinished, 0); + } + + @Test + public void distanceTravelledBeforeUpdatingLegIsRetained() { + + ArrayList boats = new ArrayList<>(); + + ArrayList legs = new ArrayList<>(); + + legs.add(START_LEG); + legs.add(FINISH_LEG); + + Race race = new Race(boats, legs, 1); + race.setDnfChance(0); + + BoatInRace unFinishedBoat = new BoatInRace("Test", 10, Color.ALICEBLUE, "tt", 1); + unFinishedBoat.setDistanceTravelledInLeg(100); + unFinishedBoat.setCurrentLeg(START_LEG); + + race.checkPosition(unFinishedBoat, 100); + assertEquals(unFinishedBoat.getCurrentLeg().getName(), "Finish"); + assertTrue(unFinishedBoat.getDistanceTravelledInLeg() > 0); + assertTrue(unFinishedBoat.getDistanceTravelledInLeg() < 100); + + } + + @Test + + public void timerDelaysByHalfSecond() throws InterruptedException { + + ArrayList boats = new ArrayList<>(); + + ArrayList legs = new ArrayList<>(); + legs.add(START_LEG); + + Race race = new Race(boats, legs, 1); + race.PRERACE_TIME = 500; + + long timeStarted = System.currentTimeMillis(); + race.countdownTimer(); + + Thread.sleep(500); + + assertTrue(System.currentTimeMillis() - timeStarted > 500); + //System.out.println(System.currentTimeMillis() - timeStarted); + + } + + @Test + public void scalerScalesVelocityCorrectly() { + + int scaleFactor = 3; + float vel1 = 0; + float vel2 = (float) 1.999; + float vel3 = (float) 32.5; + float vel4 = 500; + BoatInRace boat1 = new BoatInRace("test", vel1, Color.ALICEBLUE, "tt",1); + BoatInRace boat2 = new BoatInRace("test", vel2, Color.ALICEBLUE, "tt", 2); + BoatInRace boat3 = new BoatInRace("test", vel3, Color.ALICEBLUE, "tt", 3); + BoatInRace boat4 = new BoatInRace("test", vel4, Color.ALICEBLUE, "tt", 4); + ArrayList boats = new ArrayList<>(); + boats.add(boat1); + boats.add(boat2); + boats.add(boat3); + boats.add(boat4); + + ArrayList legs = new ArrayList<>(); + legs.add(START_LEG); + + Race race = new Race(boats, legs, scaleFactor); + race.setDnfChance(0); + + assertEquals(race.getStartingBoats().get(0).getScaledVelocity(), vel1 * scaleFactor, 1e-6); + assertEquals(race.getStartingBoats().get(1).getScaledVelocity(), vel2 * scaleFactor, 1e-6); + assertEquals(race.getStartingBoats().get(2).getScaledVelocity(), vel3 * scaleFactor, 1e-6); + assertEquals(race.getStartingBoats().get(3).getScaledVelocity(), vel4 * scaleFactor, 1e-6); + } + + @Test + public void scalerScalesRaceClockTo1MinCorrectly() { + int scaleFactor = 10; + + ArrayList boats = new ArrayList<>(); + + ArrayList legs = new ArrayList<>(); + legs.add(START_LEG); + + Race race = new Race(boats, legs, scaleFactor); + race.totalTimeElapsed = 6000; //6 seconds + assertTrue(race.calcTimer().equals("Race clock: 00:01:00")); + } + + @Test + public void scalerScalesRaceClockHoursMinutesAndSecondsCorrectly() { + int scaleFactor = 3; + + ArrayList boats = new ArrayList<>(); + + ArrayList legs = new ArrayList<>(); + legs.add(START_LEG); + + Race race = new Race(boats, legs, scaleFactor); + race.totalTimeElapsed = 3213000; + assertTrue(race.calcTimer().equals("Race clock: 02:40:39")); + + } }