package nl.joshuaslik.tudelft.UFMGame.util.xml; import java.io.File; import nl.joshuaslik.tudelft.UFMGame.util.xml.SAXParser; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; /** * Tests to check the SAX parser * @author <a href="http://www.joshuaslik.nl/" target="_blank">Joshua Slik</a> * */ public class SAXParserTest { /** * general rule */ @Rule public ExpectedException thrown = ExpectedException.none(); /** * Constructs the file */ public void constructFile() { } /** * Test to check if an xml file can be parsed */ @Test public void testParseFile1() { // TODO Properly integrate this SAXParser.parseFile("/data/base/players/adamsarota.xml"); } /** * Test to check if an xml file can be parsed */ @Test public void testParseFile2() { SAXParser.parseFile("/data/base/players/adamsarotaasdfasdf.xml"); } /** * Test to check if a string can be parsed */ @Test public void testParseString() { String xmlstring = new StringBuilder() .append("<PLAYER id=\"adamsarota\">") .append(" <NAME first=\"Adam\" last=\"Sarota\" />") .append(" <COUNTRY>Australia</COUNTRY>") .append(" <TYPE>MF</TYPE>") .append(" <POS>CM</POS>") .append(" <STATS>") .append(" <ATT>62\" \" \\ \\\" \r</ATT>\r\n") // How much can one irritate an XML Parser .append(" <DEF>60</DEF>") .append(" <STA>84</STA>").append(" </STATS>") .append(" <TPRICE>250000</TPRICE>") .append(" <TEAM>fc-utrecht</TEAM>").append("</PLAYER>") .toString(); SAXParser.parseString(xmlstring); } /** * Test to check if a string can be parsed */ @Test public void testParseStringMalformed1() { String xmlstring = new StringBuilder() .append("<PLAYER id=\"adamsarota\">") .append(" <NAME first=\"Adam\" last=\"Sarota\" />") .append(" <COUNTRY>Australia</COUNTRY>") .append(" <TYPE>MF</TYPE>").append(" <POS>CM</POS>") .append(" <STATS>").append(" <ATT>62</ATT>") .append(" <DEF>60</DEF>") .append(" <STA>84</STA>").append(" </STATS>") .append(" <TPRICE>250000</TPRICE>") .append(" <TEAM>fc-utrecht</TEAM>").append("</PLAYER>") .append("<ILLEGALTAG>").toString(); SAXParser.parseString(xmlstring); } // @Test // public void testParseStringBreak2() { // String xmlstring = new StringBuilder() // .append("<PLAYER id=\"adamsarota\">\n") // .append(" <NAME first=\"Adam\" last=\"Sarota\" />\n") // .append(" <COUNTRY>Australia</COUNTRY>\n") // .append(" <TYPE>MF</TYPE>\n") // .append(" <POS>CM</POS>\n") // .append(" <STATS>\n") // .append(" <ATT>62</ATT>\n") // .append(" <DEF>60</DEF>\n") // .append(" <STA>84</STA>\n") // .append(" </STATS>\n") // .append(" <TPRICE>250000</TPRICE>\n") // .append(" <TEAM>fc-utrecht</TEAM>\n") // .append("</PLAYER>\n") // .append("<ILLEGALTAG>\n") // .toString(); // File save = new File("build/testtarget/SAXParserTest/invalidxml.xml"); // makeDirs("build/testtarget/SAXParserTest/invalidxml.xml"); // PrintWriter pw = null; // try { // pw = new PrintWriter(save, "UTF-8"); // } catch (FileNotFoundException e) { // System.err.println(e.getMessage()); // e.printStackTrace(); // } catch (UnsupportedEncodingException e) { // System.err.println(e.getMessage()); // e.printStackTrace(); // } // pw.write(xmlstring); // pw.flush(); // pw.close(); // XMLFile file = // SAXParser.parseFile("/build/testtarget/SAXParserTest/invalidxml.xml"); // System.out.println(file.getContent("PLAYER.STATS.ATT")); // } @SuppressWarnings("unused") private void makeDirs(String location) { File target = new File(location); String here = new File("").getAbsolutePath(); String apath = target.getAbsolutePath(); apath = apath.replace("\\", "/"); apath = apath.substring(here.length() + 1); apath = apath.substring(0, apath.lastIndexOf('/')); File file = new File(apath); file.mkdirs(); } }