Began on tests for Race class.
- Made really good progress using Mockito and calling .handle() on animation timers #story[881]
This commit is contained in:
@@ -54,7 +54,7 @@ public class Race implements Runnable {
|
|||||||
* Countdown timer until race starts.
|
* Countdown timer until race starts.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private AnimationTimer countdownTimer = new AnimationTimer() {
|
protected AnimationTimer countdownTimer = new AnimationTimer() {
|
||||||
long currentTime = System.currentTimeMillis();
|
long currentTime = System.currentTimeMillis();
|
||||||
long timeLeft;
|
long timeLeft;
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,146 +1,104 @@
|
|||||||
//package seng302.Model;
|
package seng302.Model;
|
||||||
//
|
|
||||||
//import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
//import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
//import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
//import org.junit.Test;
|
import org.junit.Test;
|
||||||
//import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
//import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
//import seng302.DataInput.RaceDataSource;
|
import seng302.DataInput.BoatDataSource;
|
||||||
//import seng302.DataInput.RaceXMLReader;
|
import seng302.DataInput.BoatXMLReader;
|
||||||
//import seng302.MockOutput;
|
import seng302.DataInput.RaceDataSource;
|
||||||
//
|
import seng302.DataInput.RaceXMLReader;
|
||||||
//import javax.xml.parsers.ParserConfigurationException;
|
import seng302.Exceptions.StreamedCourseXMLException;
|
||||||
//import java.io.IOException;
|
import seng302.MockOutput;
|
||||||
//import java.util.ArrayList;
|
|
||||||
//import java.util.List;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
//
|
import java.io.IOException;
|
||||||
//import static org.junit.Assert.assertEquals;
|
import java.text.ParseException;
|
||||||
//import static org.junit.Assert.assertTrue;
|
import java.util.ArrayList;
|
||||||
//import static org.junit.Assert.fail;
|
import java.util.List;
|
||||||
//import static org.mockito.Matchers.any;
|
|
||||||
//import static org.mockito.Mockito.atLeast;
|
import static org.junit.Assert.assertEquals;
|
||||||
//import static org.mockito.Mockito.verify;
|
import static org.junit.Assert.assertTrue;
|
||||||
//
|
import static org.junit.Assert.fail;
|
||||||
///**
|
import static org.mockito.Matchers.*;
|
||||||
// * Created by esa46 on 15/03/17.
|
import static org.mockito.Mockito.*;
|
||||||
// */
|
|
||||||
//public class RaceTest{
|
/**
|
||||||
//
|
* Created by esa46 on 15/03/17.
|
||||||
// private static MockOutput mockOutput;
|
*/
|
||||||
// SharedModel.Leg START_LEG = new SharedModel.Leg("Start", new SharedModel.Marker(new SharedModel.GPSCoordinate(0, 0)), new SharedModel.Marker(new SharedModel.GPSCoordinate(1, 1)), 0);
|
public class RaceTest{
|
||||||
// SharedModel.Leg FINISH_LEG = new SharedModel.Leg("Finish", new SharedModel.Marker(new SharedModel.GPSCoordinate(1, 1)), new SharedModel.Marker(new SharedModel.GPSCoordinate(2, 2)), 0);
|
|
||||||
//
|
@Test
|
||||||
//// @Override
|
public void countdownTimerSendsBoatLocations() {
|
||||||
//// public void start(Stage primaryStage) throws Exception{}
|
|
||||||
////
|
try {
|
||||||
//// public static void main(String[] args) {
|
MockOutput mockOutput = Mockito.mock(MockOutput.class);
|
||||||
//// launch(args);
|
BoatDataSource boatDataSource = new BoatXMLReader("mockXML/boatTest.xml");
|
||||||
//// }
|
RaceDataSource raceDataSource = new RaceXMLReader("mockXML/raceTest.xml", boatDataSource);
|
||||||
//
|
Race testRace = new Race(raceDataSource, mockOutput);
|
||||||
//
|
testRace.initialiseBoats();
|
||||||
//// @BeforeClass
|
testRace.countdownTimer.handle(1);
|
||||||
//// public static void initJFX() {
|
verify(mockOutput, atLeast(boatDataSource.getBoats().size())).parseBoatLocation(anyInt(), anyDouble(), anyDouble(), anyDouble(), anyDouble());
|
||||||
//// Thread t = new Thread("JavaFX Init Thread") {
|
|
||||||
//// public void run() {
|
} catch (ParserConfigurationException | IOException | SAXException | ParseException | StreamedCourseXMLException e) {
|
||||||
//// Application.launch(TestApp.class, new String[0]);
|
e.printStackTrace();
|
||||||
//// }
|
fail();
|
||||||
//// };
|
}
|
||||||
//// t.setDaemon(true);
|
}
|
||||||
//// t.start();
|
|
||||||
//// }
|
@Test
|
||||||
//
|
public void countdownTimerSendsRaceStatusMessages() {
|
||||||
// @BeforeClass
|
|
||||||
// public static void setUp() {
|
try {
|
||||||
// try {
|
MockOutput mockOutput = Mockito.mock(MockOutput.class);
|
||||||
// mockOutput = new MockOutput();
|
RaceDataSource dataSource = new RaceXMLReader("mockXML/raceTest.xml", new BoatXMLReader("mockXML/boatTest.xml"));
|
||||||
// } catch(IOException e) {
|
Race testRace = new Race(dataSource, mockOutput);
|
||||||
// fail();
|
testRace.initialiseBoats();
|
||||||
// }
|
testRace.countdownTimer.handle(1);
|
||||||
// }
|
verify(mockOutput, atLeast(1)).parseRaceStatus(any());
|
||||||
//
|
|
||||||
// @Ignore
|
} catch (ParserConfigurationException | IOException | SAXException | ParseException | StreamedCourseXMLException e) {
|
||||||
// @Test
|
e.printStackTrace();
|
||||||
// public void boatLocationMessagesAreGenerated() {
|
fail();
|
||||||
// try {
|
}
|
||||||
// RaceDataSource raceDataSource = new RaceXMLReader("raceXML/bermuda_AC35.xml");
|
}
|
||||||
//
|
|
||||||
// MockOutput mockOutput = Mockito.mock(MockOutput.class);
|
|
||||||
// Race race = new Race(raceDataSource, 100, mockOutput);
|
|
||||||
// new Thread((race)).start();
|
|
||||||
//
|
|
||||||
// try {
|
|
||||||
// Thread.sleep(5000);
|
|
||||||
// } catch (InterruptedException e) {
|
|
||||||
// fail();
|
|
||||||
// }
|
|
||||||
// verify(mockOutput, atLeast(400)).parseBoatLocation(any());
|
|
||||||
//
|
|
||||||
// } catch (IOException e) {
|
|
||||||
// fail();
|
|
||||||
// } catch (SAXException e) {
|
|
||||||
// fail();
|
|
||||||
// } catch (ParserConfigurationException e) {
|
|
||||||
// fail();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Test
|
|
||||||
// public void timerCanBeDisabled() {
|
|
||||||
// SharedModel.BoatInRace boat1 = new SharedModel.BoatInRace("Test 1", 10000, Color.ALICEBLUE, "t1", 1);
|
|
||||||
// SharedModel.BoatInRace boat2 = new SharedModel.BoatInRace("Test 2", 10000, Color.BURLYWOOD, "t2", 2);
|
|
||||||
// List<SharedModel.BoatInRace> boats = new ArrayList<>();
|
|
||||||
// boats.add(boat1);
|
|
||||||
// boats.add(boat2);
|
|
||||||
//
|
|
||||||
// ArrayList<SharedModel.Leg> legs = new ArrayList<>();
|
|
||||||
// legs.add(START_LEG);
|
|
||||||
// legs.add(FINISH_LEG);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// Race race = new Race(boats, legs, 5, mockOutput);
|
|
||||||
// race.setDnfChance(0);
|
|
||||||
// long timeStarted = System.currentTimeMillis();
|
|
||||||
// race.run();
|
|
||||||
// assertTrue(System.currentTimeMillis() - timeStarted < 4000);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Test
|
// @Test
|
||||||
// public void checkPositionUpdatesNumberFinishedBoats() {
|
// public void checkPositionUpdatesNumberFinishedBoats() {
|
||||||
//
|
//
|
||||||
// SharedModel.BoatInRace finishedBoat = new SharedModel.BoatInRace("Test", 1000, Color.ALICEBLUE, "tt", 1);
|
// Boat finishedBoat = new Boat(1000, "Name", "Country");
|
||||||
// finishedBoat.setDistanceTravelledInLeg(500);
|
// finishedBoat.setDistanceTravelledInLeg(500);
|
||||||
//
|
//
|
||||||
// finishedBoat.setCurrentLeg(FINISH_LEG);
|
// finishedBoat.setCurrentLeg(FINISH_LEG);
|
||||||
//
|
//
|
||||||
// ArrayList<SharedModel.BoatInRace> boats = new ArrayList<>();
|
// ArrayList<Boat> boats = new ArrayList<>();
|
||||||
// boats.add(finishedBoat);
|
// boats.add(finishedBoat);
|
||||||
//
|
//
|
||||||
// ArrayList<SharedModel.Leg> legs = new ArrayList<>();
|
// ArrayList<Leg> legs = new ArrayList<>();
|
||||||
// legs.add(FINISH_LEG);
|
// legs.add(FINISH_LEG);
|
||||||
//
|
//
|
||||||
// Race race = new Race(boats, legs, 5, mockOutput);
|
// Race race = new Race(boats, legs, 5, mockOutput);
|
||||||
// race.setDnfChance(0);
|
|
||||||
// assertEquals(race.boatsFinished, 0);
|
// assertEquals(race.boatsFinished, 0);
|
||||||
//
|
//
|
||||||
// race.checkPosition(finishedBoat, 100000);
|
// race.checkPosition(finishedBoat, 100000);
|
||||||
// assertEquals(race.boatsFinished, 1);
|
// assertEquals(race.boatsFinished, 1);
|
||||||
// assertEquals(finishedBoat.getTimeFinished(), 100000);
|
// assertEquals(finishedBoat.getTimeFinished(), 100000);
|
||||||
//
|
|
||||||
// }
|
// }
|
||||||
//
|
|
||||||
// @Test
|
// @Test
|
||||||
// public void checkPositionDoesntUpdateNumberFinishedBoats() {
|
// public void checkPositionDoesntUpdateNumberFinishedBoats() {
|
||||||
//
|
//
|
||||||
// SharedModel.BoatInRace unFinishedBoat = new SharedModel.BoatInRace("Test", 10, Color.ALICEBLUE, "tt", 1);
|
// Boat unFinishedBoat = new Boat("Test", 10, Color.ALICEBLUE, "tt", 1);
|
||||||
// unFinishedBoat.setDistanceTravelledInLeg(0);
|
// unFinishedBoat.setDistanceTravelledInLeg(0);
|
||||||
//
|
//
|
||||||
// unFinishedBoat.setCurrentLeg(FINISH_LEG);
|
// unFinishedBoat.setCurrentLeg(FINISH_LEG);
|
||||||
//
|
//
|
||||||
// ArrayList<SharedModel.BoatInRace> boats = new ArrayList<>();
|
// ArrayList<Boat> boats = new ArrayList<>();
|
||||||
// boats.add(unFinishedBoat);
|
// boats.add(unFinishedBoat);
|
||||||
//
|
//
|
||||||
// ArrayList<SharedModel.Leg> legs = new ArrayList<>();
|
// ArrayList<Leg> legs = new ArrayList<>();
|
||||||
// legs.add(FINISH_LEG);
|
// legs.add(FINISH_LEG);
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
@@ -155,9 +113,9 @@
|
|||||||
// @Test
|
// @Test
|
||||||
// public void distanceTravelledBeforeUpdatingLegIsRetained() {
|
// public void distanceTravelledBeforeUpdatingLegIsRetained() {
|
||||||
//
|
//
|
||||||
// ArrayList<SharedModel.BoatInRace> boats = new ArrayList<>();
|
// ArrayList<Boat> boats = new ArrayList<>();
|
||||||
//
|
//
|
||||||
// ArrayList<SharedModel.Leg> legs = new ArrayList<>();
|
// ArrayList<Leg> legs = new ArrayList<>();
|
||||||
//
|
//
|
||||||
// legs.add(START_LEG);
|
// legs.add(START_LEG);
|
||||||
// legs.add(FINISH_LEG);
|
// legs.add(FINISH_LEG);
|
||||||
@@ -165,7 +123,7 @@
|
|||||||
// Race race = new Race(boats, legs, 1, mockOutput);
|
// Race race = new Race(boats, legs, 1, mockOutput);
|
||||||
// race.setDnfChance(0);
|
// race.setDnfChance(0);
|
||||||
//
|
//
|
||||||
// SharedModel.BoatInRace unFinishedBoat = new SharedModel.BoatInRace("Test", 10, Color.ALICEBLUE, "tt", 4);
|
// Boat unFinishedBoat = new Boat("Test", 10, Color.ALICEBLUE, "tt", 4);
|
||||||
// unFinishedBoat.setDistanceTravelledInLeg(100);
|
// unFinishedBoat.setDistanceTravelledInLeg(100);
|
||||||
// unFinishedBoat.setCurrentLeg(START_LEG);
|
// unFinishedBoat.setCurrentLeg(START_LEG);
|
||||||
//
|
//
|
||||||
@@ -179,9 +137,9 @@
|
|||||||
// @Test
|
// @Test
|
||||||
// public void timerDelaysByHalfSecond() throws InterruptedException {
|
// public void timerDelaysByHalfSecond() throws InterruptedException {
|
||||||
//
|
//
|
||||||
// ArrayList<SharedModel.BoatInRace> boats = new ArrayList<>();
|
// ArrayList<Boat> boats = new ArrayList<>();
|
||||||
//
|
//
|
||||||
// ArrayList<SharedModel.Leg> legs = new ArrayList<>();
|
// ArrayList<Leg> legs = new ArrayList<>();
|
||||||
// legs.add(START_LEG);
|
// legs.add(START_LEG);
|
||||||
//
|
//
|
||||||
// Race race = new Race(boats, legs, 1, mockOutput);
|
// Race race = new Race(boats, legs, 1, mockOutput);
|
||||||
@@ -207,17 +165,17 @@
|
|||||||
// float vel2 = (float) 1.999;
|
// float vel2 = (float) 1.999;
|
||||||
// float vel3 = (float) 32.5;
|
// float vel3 = (float) 32.5;
|
||||||
// float vel4 = 500;
|
// float vel4 = 500;
|
||||||
// SharedModel.BoatInRace boat1 = new SharedModel.BoatInRace("test", vel1, Color.ALICEBLUE, "tt",1);
|
// Boat boat1 = new Boat("test", vel1, Color.ALICEBLUE, "tt",1);
|
||||||
// SharedModel.BoatInRace boat2 = new SharedModel.BoatInRace("test", vel2, Color.ALICEBLUE, "tt", 2);
|
// Boat boat2 = new Boat("test", vel2, Color.ALICEBLUE, "tt", 2);
|
||||||
// SharedModel.BoatInRace boat3 = new SharedModel.BoatInRace("test", vel3, Color.ALICEBLUE, "tt", 3);
|
// Boat boat3 = new Boat("test", vel3, Color.ALICEBLUE, "tt", 3);
|
||||||
// SharedModel.BoatInRace boat4 = new SharedModel.BoatInRace("test", vel4, Color.ALICEBLUE, "tt", 4);
|
// Boat boat4 = new Boat("test", vel4, Color.ALICEBLUE, "tt", 4);
|
||||||
// ArrayList<SharedModel.BoatInRace> boats = new ArrayList<>();
|
// ArrayList<Boat> boats = new ArrayList<>();
|
||||||
// boats.add(boat1);
|
// boats.add(boat1);
|
||||||
// boats.add(boat2);
|
// boats.add(boat2);
|
||||||
// boats.add(boat3);
|
// boats.add(boat3);
|
||||||
// boats.add(boat4);
|
// boats.add(boat4);
|
||||||
//
|
//
|
||||||
// ArrayList<SharedModel.Leg> legs = new ArrayList<>();
|
// ArrayList<Leg> legs = new ArrayList<>();
|
||||||
// legs.add(START_LEG);
|
// legs.add(START_LEG);
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
@@ -232,9 +190,9 @@
|
|||||||
// }
|
// }
|
||||||
// @Test
|
// @Test
|
||||||
// public void doNotFinishCorrectly() {
|
// public void doNotFinishCorrectly() {
|
||||||
// ArrayList<SharedModel.BoatInRace> boats = new ArrayList<>();
|
// ArrayList<Boat> boats = new ArrayList<>();
|
||||||
//
|
//
|
||||||
// ArrayList<SharedModel.Leg> legs = new ArrayList<>();
|
// ArrayList<Leg> legs = new ArrayList<>();
|
||||||
// legs.add(START_LEG);
|
// legs.add(START_LEG);
|
||||||
//
|
//
|
||||||
// Race race = new Race(boats, legs, 1, mockOutput);
|
// Race race = new Race(boats, legs, 1, mockOutput);
|
||||||
@@ -245,7 +203,7 @@
|
|||||||
// race.setDnfChance(0);
|
// race.setDnfChance(0);
|
||||||
// assertTrue(!race.doNotFinish());
|
// assertTrue(!race.doNotFinish());
|
||||||
// }
|
// }
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//}
|
}
|
||||||
|
|||||||
@@ -1,96 +0,0 @@
|
|||||||
//package seng302.Model;/**
|
|
||||||
// * Created by Gondr on 26/03/2017.
|
|
||||||
// */
|
|
||||||
//
|
|
||||||
//import org.junit.Ignore;
|
|
||||||
//import org.junit.Test;
|
|
||||||
//import seng302.DataInput.RaceXMLReader;
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//import java.util.List;
|
|
||||||
//
|
|
||||||
//import static org.junit.Assert.*;
|
|
||||||
//
|
|
||||||
//public class RaceXMLTest {
|
|
||||||
// RaceXMLReader raceXMLReader;
|
|
||||||
//
|
|
||||||
// @Test
|
|
||||||
// public void canFindFile() {
|
|
||||||
// try {
|
|
||||||
// RaceXMLReader raceXMLReader = new RaceXMLReader("raceXML/bermuda_AC35.xml", false);
|
|
||||||
// } catch (Exception e) {
|
|
||||||
// fail("Cannot find raceXML/bermuda_AC35.xml in the resources folder");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Ignore
|
|
||||||
// @Test
|
|
||||||
// public void canReadBoats() {
|
|
||||||
// try {
|
|
||||||
// RaceXMLReader raceXMLReader = new RaceXMLReader("raceXML/bermuda_AC35.xml", false);
|
|
||||||
// raceXMLReader.readBoats();
|
|
||||||
// List<Boat> boats = raceXMLReader.getBoats();
|
|
||||||
// assertTrue(boats.size() == 6);
|
|
||||||
// //test boat 1
|
|
||||||
// assertEquals(boats.get(0).getName(), "ORACLE TEAM USA");
|
|
||||||
// assertTrue(boats.get(0).getVelocity() == 20);
|
|
||||||
// //test boat 2
|
|
||||||
// assertEquals(boats.get(1).getName(), "Land Rover BAR");
|
|
||||||
// assertTrue(boats.get(1).getVelocity() == 30);
|
|
||||||
// assertEquals(boats.get(1).getCountry(), "GBR");
|
|
||||||
// //test boat 3
|
|
||||||
// assertEquals(boats.get(2).getName(), "SoftBank Team Japan");
|
|
||||||
// assertTrue(boats.get(2).getVelocity() == 25);
|
|
||||||
// assertEquals(boats.get(2).getCountry(), "JPN");
|
|
||||||
// //test boat 4
|
|
||||||
// assertEquals(boats.get(3).getName(), "Groupama Team France");
|
|
||||||
// assertTrue(boats.get(3).getVelocity() == 20);
|
|
||||||
// assertEquals(boats.get(3).getCountry(), "FRA");
|
|
||||||
// //test boat 5
|
|
||||||
// assertEquals(boats.get(4).getName(), "Artemis Racing");
|
|
||||||
// assertTrue(boats.get(4).getVelocity() == 29);
|
|
||||||
// assertEquals(boats.get(4).getCountry(), "SWE");
|
|
||||||
// //test boat 6
|
|
||||||
// assertEquals(boats.get(5).getName(), "Emirates Team New Zealand");
|
|
||||||
// assertTrue(boats.get(5).getVelocity() == 62);
|
|
||||||
// assertEquals(boats.get(5).getCountry(), "NZL");
|
|
||||||
// } catch (Exception e) {
|
|
||||||
// fail("Boat Unreadable");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Test
|
|
||||||
// public void canReadLegs() {
|
|
||||||
// try {
|
|
||||||
// RaceXMLReader raceXMLReader = new RaceXMLReader("raceXML/bermuda_AC35.xml", false);
|
|
||||||
// raceXMLReader.readLegs();
|
|
||||||
// assertTrue(raceXMLReader.getLegs().size() == 5);
|
|
||||||
// } catch (Exception e) {
|
|
||||||
// fail("Legs Unreadable");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Test
|
|
||||||
// public void canReadCourse() {
|
|
||||||
// try {
|
|
||||||
// RaceXMLReader raceXMLReader = new RaceXMLReader("raceXML/bermuda_AC35.xml", false);
|
|
||||||
// raceXMLReader.readCourse();
|
|
||||||
// assertTrue(raceXMLReader.getMapTopLeft() != null);
|
|
||||||
// assertTrue(raceXMLReader.getMapBottomRight() != null);
|
|
||||||
// assertTrue(raceXMLReader.getFinishPt1() != null);
|
|
||||||
// assertTrue(raceXMLReader.getFinishPt2() != null);
|
|
||||||
// assertTrue(raceXMLReader.getStartPt1() != null);
|
|
||||||
// assertTrue(raceXMLReader.getStartPt2() != null);
|
|
||||||
// assertTrue(raceXMLReader.getLeewardPt1() != null);
|
|
||||||
// assertTrue(raceXMLReader.getLeewardPt2() != null);
|
|
||||||
// assertTrue(raceXMLReader.getWindwardPt1() != null);
|
|
||||||
// assertTrue(raceXMLReader.getWindwardPt2() != null);
|
|
||||||
// assertTrue(raceXMLReader.getMark() != null);
|
|
||||||
// assertTrue(raceXMLReader.getBoundary().size() == 11);
|
|
||||||
// } catch (Exception e) {
|
|
||||||
// e.printStackTrace();
|
|
||||||
// fail("Course Unreadable");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//}
|
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
|
||||||
|
<BoatConfig>
|
||||||
|
<Boats>
|
||||||
|
|
||||||
|
<!--Mark Boats-->
|
||||||
|
<Boat Type="Mark" BoatName="PRO" SourceID="101" >
|
||||||
|
<GPSposition X= "-64.854304" Y="32.296577" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat Type="Mark" BoatName="PIN" SourceID="102" >
|
||||||
|
<GPSposition X= "-64.855242" Y="32.293771" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat Type="Mark" BoatName="Marker1" SourceID="103" >
|
||||||
|
<GPSposition X= "-64.843983" Y="32.293039" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat Type="Mark" BoatName="WGL" SourceID="104" >
|
||||||
|
<GPSposition X= "-64.850045" Y="32.28468" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat Type="Mark" BoatName="WGR" SourceID="105" >
|
||||||
|
<GPSposition X= "-64.847591" Y="32.280164" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat Type="Mark" BoatName="LGL" SourceID="106" >
|
||||||
|
<GPSposition X= "-64.835249" Y="32.309693" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat Type="Mark" BoatName="LGR" SourceID="107" >
|
||||||
|
<GPSposition X= "-64.831785" Y="32.308046" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat Type="Mark" BoatName="FL" SourceID="108" >
|
||||||
|
<GPSposition X= "-64.839291" Y="32.317379" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat Type="Mark" BoatName="FR" SourceID="109" >
|
||||||
|
<GPSposition X= "-64.83626" Y="32.317257" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
|
||||||
|
<!--Participants-->
|
||||||
|
<Boat BoatName="Team ORACLE USA" HullNum="RG01" ShapeID="0" ShortName="USA" SourceID="121" StoweName="USA" Type="Yacht">
|
||||||
|
<GPSposition X="-64.854304" Y="32.296577" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat BoatName="Land Rover BAR" HullNum="RG01" ShapeID="0" ShortName="GBR" SourceID="122" StoweName="GBR" Type="Yacht">
|
||||||
|
<GPSposition X="-64.854304" Y="32.296577" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat BoatName="SoftBank Team Japan" HullNum="RG01" ShapeID="0" ShortName="JPN" SourceID="123" StoweName="JPN" Type="Yacht">
|
||||||
|
<GPSposition X="-64.854304" Y="32.296577" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat BoatName="Groupama Team France" HullNum="RG01" ShapeID="0" ShortName="FRA" SourceID="124" StoweName="FRA" Type="Yacht">
|
||||||
|
<GPSposition X="-64.854304" Y="32.296577" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat BoatName="Artemis Racing" HullNum="RG01" ShapeID="0" ShortName="SWE" SourceID="125" StoweName="SWE" Type="Yacht">
|
||||||
|
<GPSposition X="-64.854304" Y="32.296577" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
<Boat BoatName="Emirates Team New Zealand" HullNum="RG01" ShapeID="0" ShortName="NZL" SourceID="126" StoweName="NZL" Type="Yacht">
|
||||||
|
<GPSposition X="-64.854304" Y="32.296577" Z="0"/>
|
||||||
|
</Boat>
|
||||||
|
</Boats>
|
||||||
|
</BoatConfig>
|
||||||
@@ -1,251 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<BoatConfig>
|
|
||||||
|
|
||||||
<Modified>2012-05-17T07:49:40+0200</Modified>
|
|
||||||
|
|
||||||
<Version>12</Version>
|
|
||||||
|
|
||||||
<Settings>
|
|
||||||
|
|
||||||
<RaceBoatType Type="AC45"/>
|
|
||||||
|
|
||||||
<BoatDimension BoatLength="14.019" HullLength="13.449"/>
|
|
||||||
|
|
||||||
<ZoneSize MarkZoneSize="40.347" CourseZoneSize="40.347"/>
|
|
||||||
|
|
||||||
<ZoneLimits Limit1="200" Limit2="100" Limit3="40.347" Limit4="0" Limit5="-100"/>
|
|
||||||
|
|
||||||
</Settings>
|
|
||||||
|
|
||||||
<BoatShapes>
|
|
||||||
|
|
||||||
<BoatShape ShapeID="0">
|
|
||||||
|
|
||||||
<Vertices>
|
|
||||||
|
|
||||||
<Vtx Seq="1" Y="0" X="-2.659"/>
|
|
||||||
|
|
||||||
<Vtx Seq="2" Y="18.359" X="-2.659"/>
|
|
||||||
|
|
||||||
<Vtx Seq="3" Y="18.359" X="2.659"/>
|
|
||||||
|
|
||||||
<Vtx Seq="4" Y="0" X="2.659"/>
|
|
||||||
|
|
||||||
</Vertices>
|
|
||||||
|
|
||||||
</BoatShape>
|
|
||||||
|
|
||||||
<BoatShape ShapeID="1">
|
|
||||||
|
|
||||||
<Vertices>
|
|
||||||
|
|
||||||
<Vtx Seq="1" Y="0" X="-1.278"/>
|
|
||||||
|
|
||||||
<Vtx Seq="2" Y="8.876" X="-1.278"/>
|
|
||||||
|
|
||||||
<Vtx Seq="3" Y="8.876" X="1.278"/>
|
|
||||||
|
|
||||||
<Vtx Seq="4" Y="0" X="1.278"/>
|
|
||||||
|
|
||||||
</Vertices>
|
|
||||||
|
|
||||||
</BoatShape>
|
|
||||||
|
|
||||||
<BoatShape ShapeID="2">
|
|
||||||
|
|
||||||
<Vertices>
|
|
||||||
|
|
||||||
<Vtx Seq="1" Y="0" X="-1.1"/>
|
|
||||||
|
|
||||||
<Vtx Seq="2" Y="8.3" X="-1.1"/>
|
|
||||||
|
|
||||||
<Vtx Seq="3" Y="8.3" X="1.1"/>
|
|
||||||
|
|
||||||
<Vtx Seq="4" Y="0" X="1.1"/>
|
|
||||||
|
|
||||||
</Vertices>
|
|
||||||
|
|
||||||
</BoatShape>
|
|
||||||
|
|
||||||
<BoatShape ShapeID="3">
|
|
||||||
|
|
||||||
<Vertices>
|
|
||||||
|
|
||||||
<Vtx Seq="1" Y="0" X="-0.75"/>
|
|
||||||
|
|
||||||
<Vtx Seq="2" Y="3" X="-0.75"/>
|
|
||||||
|
|
||||||
<Vtx Seq="3" Y="3" X="0.75"/>
|
|
||||||
|
|
||||||
<Vtx Seq="4" Y="0" X="0.75"/>
|
|
||||||
|
|
||||||
</Vertices>
|
|
||||||
|
|
||||||
</BoatShape>
|
|
||||||
|
|
||||||
<BoatShape ShapeID="4">
|
|
||||||
|
|
||||||
<Vertices>
|
|
||||||
|
|
||||||
<Vtx Seq="1" Y="0" X="-3.46"/>
|
|
||||||
|
|
||||||
<Vtx Seq="2" Y="13.449" X="-3.46"/>
|
|
||||||
|
|
||||||
<Vtx Seq="3" Y="14.019" X="0"/>
|
|
||||||
|
|
||||||
<Vtx Seq="4" Y="13.449" X="3.46"/>
|
|
||||||
|
|
||||||
<Vtx Seq="5" Y="0" X="3.46"/>
|
|
||||||
|
|
||||||
</Vertices>
|
|
||||||
|
|
||||||
<Catamaran>
|
|
||||||
|
|
||||||
<Vtx Seq="1" Y="1.769" X="-2.752"/>
|
|
||||||
|
|
||||||
<Vtx Seq="2" Y="0" X="-2.813"/>
|
|
||||||
|
|
||||||
<Vtx Seq="3" Y="0" X="-3.34"/>
|
|
||||||
|
|
||||||
<Vtx Seq="4" Y="5.351" X="-3.46"/>
|
|
||||||
|
|
||||||
<Vtx Seq="5" Y="10.544" X="-3.387"/>
|
|
||||||
|
|
||||||
<Vtx Seq="6" Y="13.449" X="-3.075"/>
|
|
||||||
|
|
||||||
<Vtx Seq="7" Y="10.851" X="-2.793"/>
|
|
||||||
|
|
||||||
<Vtx Seq="8" Y="6.669" X="-2.699"/>
|
|
||||||
|
|
||||||
<Vtx Seq="9" Y="6.669" X="2.699"/>
|
|
||||||
|
|
||||||
<Vtx Seq="10" Y="10.851" X="2.793"/>
|
|
||||||
|
|
||||||
<Vtx Seq="11" Y="13.449" X="3.075"/>
|
|
||||||
|
|
||||||
<Vtx Seq="12" Y="10.544" X="3.387"/>
|
|
||||||
|
|
||||||
<Vtx Seq="13" Y="5.351" X="3.46"/>
|
|
||||||
|
|
||||||
<Vtx Seq="14" Y="0" X="3.34"/>
|
|
||||||
|
|
||||||
<Vtx Seq="15" Y="0" X="2.813"/>
|
|
||||||
|
|
||||||
<Vtx Seq="16" Y="1.769" X="2.752"/>
|
|
||||||
|
|
||||||
</Catamaran>
|
|
||||||
|
|
||||||
<Bowsprit>
|
|
||||||
|
|
||||||
<Vtx Seq="1" Y="6.669" X="-0.2"/>
|
|
||||||
|
|
||||||
<Vtx Seq="2" Y="11.377" X="-0.2"/>
|
|
||||||
|
|
||||||
<Vtx Seq="3" Y="14.019" X="0"/>
|
|
||||||
|
|
||||||
<Vtx Seq="4" Y="11.377" X="0.2"/>
|
|
||||||
|
|
||||||
<Vtx Seq="5" Y="6.669" X="0.2"/>
|
|
||||||
|
|
||||||
</Bowsprit>
|
|
||||||
|
|
||||||
<Trampoline>
|
|
||||||
|
|
||||||
<Vtx Seq="1" Y="2" X="-2.699"/>
|
|
||||||
|
|
||||||
<Vtx Seq="2" Y="6.438" X="-2.699"/>
|
|
||||||
|
|
||||||
<Vtx Seq="3" Y="6.438" X="2.699"/>
|
|
||||||
|
|
||||||
<Vtx Seq="4" Y="2" X="2.699"/>
|
|
||||||
|
|
||||||
</Trampoline>
|
|
||||||
|
|
||||||
</BoatShape>
|
|
||||||
|
|
||||||
<BoatShape ShapeID="5"/>
|
|
||||||
|
|
||||||
</BoatShapes>
|
|
||||||
|
|
||||||
<Boats>
|
|
||||||
|
|
||||||
<Boat Type="RC" SourceID="121" ShapeID="0" HullNum="RG01" StoweName="PRO" ShortName="PRO"
|
|
||||||
|
|
||||||
BoatName="Regardless">
|
|
||||||
|
|
||||||
<GPSposition Z="6.840" Y="7.800" X="0.000"/>
|
|
||||||
|
|
||||||
<FlagPosition Z="0.000" Y="7.800" X="0.000"/>
|
|
||||||
|
|
||||||
</Boat>
|
|
||||||
|
|
||||||
<Boat Type="Mark" SourceID="122" ShapeID="1" HullNum="LC05" StoweName="CON" ShortName="Constellation"
|
|
||||||
|
|
||||||
BoatName="Constellation">
|
|
||||||
|
|
||||||
<GPSposition Z="5.334" Y="3.804" X="0.000"/>
|
|
||||||
|
|
||||||
<FlagPosition Z="0.000" Y="3.426" X="0.000"/>
|
|
||||||
|
|
||||||
</Boat>
|
|
||||||
|
|
||||||
<Boat Type="Mark" SourceID="123" ShapeID="1" HullNum="LC04" StoweName="MIS" ShortName="Mischief"
|
|
||||||
|
|
||||||
BoatName="Mischief">
|
|
||||||
|
|
||||||
<GPSposition Z="5.334" Y="3.804" X="0.000"/>
|
|
||||||
|
|
||||||
<FlagPosition Z="0.000" Y="3.426" X="0.000"/>
|
|
||||||
|
|
||||||
</Boat>
|
|
||||||
|
|
||||||
<Boat Type="Mark" SourceID="124" ShapeID="1" HullNum="LC03" ShortName="Atalanta" BoatName="Atalanta">
|
|
||||||
|
|
||||||
<GPSposition Z="5.334" Y="3.804" X="0.000"/>
|
|
||||||
|
|
||||||
<FlagPosition Z="0.000" Y="3.426" X="0.000"/>
|
|
||||||
|
|
||||||
</Boat>
|
|
||||||
|
|
||||||
<Boat SourceID="125" ShapeID="1" StoweName="VOL" HullNum="LC01" ShortName="Volunteer"
|
|
||||||
|
|
||||||
BoatName="Volunteer">
|
|
||||||
|
|
||||||
<GPSposition Z="5.334" Y="3.804" X="0.000"/>
|
|
||||||
|
|
||||||
<FlagPosition Z="0.000" Y="3.426" X="0.000"/>
|
|
||||||
|
|
||||||
</Boat>
|
|
||||||
|
|
||||||
<Boat Type="Mark" SourceID="126" ShapeID="1" HullNum="LC13" StoweName="MS2" ShortName="Defender"
|
|
||||||
|
|
||||||
BoatName="Defender">
|
|
||||||
|
|
||||||
<GPSposition Z="5.334" Y="3.804" X="0.000"/>
|
|
||||||
|
|
||||||
<FlagPosition Z="0.000" Y="3.426" X="0.000"/>
|
|
||||||
|
|
||||||
</Boat>
|
|
||||||
|
|
||||||
<Boat Type="Mark" SourceID="128" ShapeID="1" HullNum="LC01" ShortName="Shamrock" BoatName="Shamrock">
|
|
||||||
|
|
||||||
<GPSposition Z="5.334" Y="3.804" X="0.000"/>
|
|
||||||
|
|
||||||
<FlagPosition Z="0.000" Y="3.426" X="0.000"/>
|
|
||||||
|
|
||||||
</Boat>
|
|
||||||
|
|
||||||
<Boat Type="Yacht" SourceID="101" ShapeID="4" HullNum="AC4501" StoweName="KOR" ShortName="TEAM KOREA"
|
|
||||||
|
|
||||||
BoatName="TEAM KOREA" Country="KOR">
|
|
||||||
|
|
||||||
<GPSposition Z="1.738" Y="0.625" X="0.001"/>
|
|
||||||
|
|
||||||
<MastTop Z="21.496" Y="4.233" X="0.000"/>
|
|
||||||
|
|
||||||
</Boat>
|
|
||||||
|
|
||||||
</Boats>
|
|
||||||
|
|
||||||
</BoatConfig>
|
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<Race>
|
||||||
|
<RaceID>5326</RaceID>
|
||||||
|
<RaceType>FLEET</RaceType>
|
||||||
|
<CreationTimeDate>2017-04-19T15:30:00+1200</CreationTimeDate>
|
||||||
|
<RaceStartTime Postpone="false" Time="2017-04-19T15:33:00+1200"/>
|
||||||
|
<Participants>
|
||||||
|
<Yacht SourceID="121"/>
|
||||||
|
<Yacht SourceID="122"/>
|
||||||
|
<Yacht SourceID="123"/>
|
||||||
|
<Yacht SourceID="124"/>
|
||||||
|
<Yacht SourceID="125"/>
|
||||||
|
<Yacht SourceID="126"/>
|
||||||
|
</Participants>
|
||||||
|
<CompoundMarkSequence>
|
||||||
|
<Corner CompoundMarkID="1" SeqID="1"/>
|
||||||
|
<Corner CompoundMarkID="2" SeqID="2"/>
|
||||||
|
<Corner CompoundMarkID="4" SeqID="3"/>
|
||||||
|
<Corner CompoundMarkID="3" SeqID="4"/>
|
||||||
|
<Corner CompoundMarkID="4" SeqID="5"/>
|
||||||
|
<Corner CompoundMarkID="5" SeqID="6"/>
|
||||||
|
</CompoundMarkSequence>
|
||||||
|
<Course>
|
||||||
|
<CompoundMark CompoundMarkID="1" Name="Start Line">
|
||||||
|
<Mark SeqId="1" Name="PRO" TargetLat="32.296577" TargetLng="-64.854304" SourceID="101"/>
|
||||||
|
<Mark SeqId="2" Name="PIN" TargetLat="32.293771" TargetLng="-64.855242" SourceID="102"/>
|
||||||
|
</CompoundMark>
|
||||||
|
<CompoundMark CompoundMarkID="2" Name="Marker 1">
|
||||||
|
<Mark Name="Marker1" TargetLat="32.293039" TargetLng="-64.843983" SourceID="103"/>
|
||||||
|
</CompoundMark>
|
||||||
|
<CompoundMark CompoundMarkID="3" Name="Windward Gate">
|
||||||
|
<Mark Name="WGL" SeqId="1" TargetLat="32.28468" TargetLng="-64.850045" SourceID="104"/>
|
||||||
|
<Mark Name="WGR" SeqId="2" TargetLat="32.280164" TargetLng="-64.847591" SourceID="105"/>
|
||||||
|
</CompoundMark>
|
||||||
|
<CompoundMark CompoundMarkID="4" Name="Leeward Gate">
|
||||||
|
<Mark Name="LGL" SeqId="1" TargetLat="32.309693" TargetLng="-64.835249" SourceID="106"/>
|
||||||
|
<Mark Name="LGR" SeqId="2" TargetLat="32.308046" TargetLng="-64.831785" SourceID="107"/>
|
||||||
|
</CompoundMark>
|
||||||
|
<CompoundMark CompoundMarkID="5" Name="Finish Line">
|
||||||
|
<Mark Name="FL" SeqId="1" TargetLat="32.317379" TargetLng="-64.839291" SourceID="108"/>
|
||||||
|
<Mark Name="FR" SeqId="2" TargetLat="32.317257" TargetLng="-64.83626" SourceID="109"/>
|
||||||
|
</CompoundMark>
|
||||||
|
</Course>
|
||||||
|
<CourseLimit>
|
||||||
|
<Limit Lat="32.313922" Lon="-64.837168" SeqID="1"/>
|
||||||
|
<Limit Lat="32.317379" Lon="-64.839291" SeqID="2"/>
|
||||||
|
<Limit Lat="32.317911" Lon="-64.836996" SeqID="3"/>
|
||||||
|
<Limit Lat="32.317257" Lon="-64.83626" SeqID="4"/>
|
||||||
|
<Limit Lat="32.304273" Lon="-64.822834" SeqID="5"/>
|
||||||
|
<Limit Lat="32.279097" Lon="-64.841545" SeqID="6"/>
|
||||||
|
<Limit Lat="32.279604" Lon="-64.849871" SeqID="7"/>
|
||||||
|
<Limit Lat="32.289545" Lon="-64.854162" SeqID="8"/>
|
||||||
|
<Limit Lat="32.290198" Lon="-64.858711" SeqID="9"/>
|
||||||
|
<Limit Lat="32.297164" Lon="-64.856394" SeqID="10"/>
|
||||||
|
<Limit Lat="32.296148" Lon="-64.849184" SeqID="11"/>
|
||||||
|
</CourseLimit>
|
||||||
|
</Race>
|
||||||
@@ -1,20 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<RegattaConfig>
|
<RegattaConfig>
|
||||||
|
|
||||||
<RegattaID>3</RegattaID>
|
<RegattaID>3</RegattaID>
|
||||||
|
|
||||||
<RegattaName>New Zealand Test</RegattaName>
|
<RegattaName>New Zealand Test</RegattaName>
|
||||||
|
|
||||||
<CourseName>North Head</CourseName>
|
<CourseName>North Head</CourseName>
|
||||||
|
|
||||||
<CentralLatitude>-36.82791529</CentralLatitude>
|
<CentralLatitude>-36.82791529</CentralLatitude>
|
||||||
|
|
||||||
<CentralLongitude>174.81218919</CentralLongitude>
|
<CentralLongitude>174.81218919</CentralLongitude>
|
||||||
|
|
||||||
<CentralAltitude>0.00</CentralAltitude>
|
<CentralAltitude>0.00</CentralAltitude>
|
||||||
|
|
||||||
<UtcOffset>12</UtcOffset>
|
<UtcOffset>12</UtcOffset>
|
||||||
|
|
||||||
<MagneticVariation>14.1</MagneticVariation>
|
<MagneticVariation>14.1</MagneticVariation>
|
||||||
|
|
||||||
</RegattaConfig>
|
</RegattaConfig>
|
||||||
Reference in New Issue
Block a user