From 1e3b816ff58d6f11c1aab2341017bb02814459b0 Mon Sep 17 00:00:00 2001 From: Erika Savell Date: Tue, 25 Apr 2017 17:59:06 +1200 Subject: [PATCH] Added tests for BoatData and RaceData #story[778] --- .../test/java/seng302/Data/BoatDataTest.java | 87 +++++++++++++++++++ .../java/seng302/Data/RegattaDataTest.java | 74 ++++++++++++++++ .../{Mock => DataInput}/RegattaXMLTest.java | 2 +- 3 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 mock/src/test/java/seng302/Data/BoatDataTest.java create mode 100644 mock/src/test/java/seng302/Data/RegattaDataTest.java rename mock/src/test/java/seng302/{Mock => DataInput}/RegattaXMLTest.java (98%) diff --git a/mock/src/test/java/seng302/Data/BoatDataTest.java b/mock/src/test/java/seng302/Data/BoatDataTest.java new file mode 100644 index 00000000..14d3ff5a --- /dev/null +++ b/mock/src/test/java/seng302/Data/BoatDataTest.java @@ -0,0 +1,87 @@ +package seng302.Data; + + +import org.junit.Before; +import org.junit.Test; +import org.xml.sax.SAXException; +import seng302.DataInput.RaceDataSource; +import seng302.DataInput.RaceXMLReader; + +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; + +import static junit.framework.TestCase.assertTrue; + +/** + * Created by esa46 on 25/04/17. + */ +public class BoatDataTest { + + + private static final String ROOT_TAG = "BoatConfig"; + private static final String[] REQUIRED_TAGS = new String[]{ + "Boats", "GPSposition" + }; + private static final String[] REQUIRED_ATTRIBUTES = new String[]{ + "SourceID", "ShapeID", "HullNum", "StoweName", + "ShortName", "BoatName" + }; + + String result; + RaceDataSource raceDataSource; + + @Before + public void initReader() { + try { + raceDataSource = new RaceXMLReader("raceXML/bermuda_AC35.xml"); + BoatData boatData = new BoatData(raceDataSource.getBoats()); + result = boatData.createXML(); + + + } catch (IOException e) { + e.printStackTrace(); + } catch (SAXException e) { + e.printStackTrace(); + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } + } + + @Test + public void xmlHasAllNecessaryTags() { + + assertTrue(result.contains("<" + ROOT_TAG + ">")); + for (String tag : REQUIRED_TAGS) { + assertTrue(result.contains("<" + tag + ">") || result.contains("<" + tag + " ")); + } + } + + @Test + public void xmlHasAllNecessaryAttributes() { + + for (String attribute : REQUIRED_ATTRIBUTES) { + assertTrue(result.contains(attribute + "=")); + } + } + + @Test + public void allTagsAreTerminated() { + + for (String tag : REQUIRED_TAGS) { + int lastIndex = 0; + String openTag = "<" + tag + ">"; + String closeTag = ""; + while (lastIndex < result.length() && lastIndex > 0) { + lastIndex = result.indexOf(openTag, lastIndex); + if (lastIndex > 0) { + + lastIndex = result.indexOf(closeTag, lastIndex); + assertTrue(lastIndex > 0); + } + } + } + } + + + +} diff --git a/mock/src/test/java/seng302/Data/RegattaDataTest.java b/mock/src/test/java/seng302/Data/RegattaDataTest.java new file mode 100644 index 00000000..c3040498 --- /dev/null +++ b/mock/src/test/java/seng302/Data/RegattaDataTest.java @@ -0,0 +1,74 @@ +package seng302.Data; + +import org.junit.Before; +import org.junit.Test; +import org.xml.sax.SAXException; +import seng302.DataInput.RaceDataSource; +import seng302.DataInput.RaceXMLReader; +import seng302.DataInput.RegattaDataSource; +import seng302.DataInput.RegattaXMLReader; + +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; + +import static junit.framework.TestCase.assertTrue; + +/** + * Created by esa46 on 25/04/17. + */ +public class RegattaDataTest { + + private static final String ROOT_TAG = "RegattaConfig"; + private static final String[] REQUIRED_TAGS = new String[]{ + "RegattaID", "RegattaName", "CourseName", "CentralLatitude", "CentralLongitude", + "CentralAltitude", "UtcOffset", "MagneticVariation" + }; + String result; + RegattaDataSource regattaDataSource; + + @Before + public void initReader() { + try { + regattaDataSource = new RegattaXMLReader("mockXML/regattaTest.xml"); + RegattaData regattaData = new RegattaData(regattaDataSource); + result = regattaData.createXML(); + + + } catch (IOException e) { + e.printStackTrace(); + } catch (SAXException e) { + e.printStackTrace(); + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } + } + + @Test + public void xmlHasAllNecessaryFields() { + + assertTrue(result.contains("<" + ROOT_TAG + ">")); + for (String tag : REQUIRED_TAGS) { + System.out.println(tag); + assertTrue(result.contains("<" + tag + ">") || result.contains("<" + tag + " ")); + } + } + + @Test + public void allTagsAreTerminated() { + + for (String tag : REQUIRED_TAGS) { + int lastIndex = 0; + String openTag = "<" + tag + ">"; + String closeTag = ""; + while (lastIndex < result.length() && lastIndex > 0) { + lastIndex = result.indexOf(openTag, lastIndex); + if (lastIndex > 0) { + + lastIndex = result.indexOf(closeTag, lastIndex); + assertTrue(lastIndex > 0); + } + } + } + } + +} diff --git a/mock/src/test/java/seng302/Mock/RegattaXMLTest.java b/mock/src/test/java/seng302/DataInput/RegattaXMLTest.java similarity index 98% rename from mock/src/test/java/seng302/Mock/RegattaXMLTest.java rename to mock/src/test/java/seng302/DataInput/RegattaXMLTest.java index 0e8898bb..09c29087 100644 --- a/mock/src/test/java/seng302/Mock/RegattaXMLTest.java +++ b/mock/src/test/java/seng302/DataInput/RegattaXMLTest.java @@ -1,4 +1,4 @@ -package seng302.Mock; +package seng302.DataInput; import org.junit.Before; import org.junit.Test;