Created
March 15, 2013 13:48
-
-
Save fridolin-koch/5169989 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Author: Frido Koch | |
* Email: [email protected] | |
* License: CC BY-NC-SA 3.0 DE | |
* http://creativecommons.org/licenses/by-nc-sa/3.0/de/ | |
*/ | |
package sheet10; | |
import static org.junit.Assert.*; | |
import java.io.IOException; | |
import java.io.StringReader; | |
import java.io.StringWriter; | |
import org.junit.Test; | |
public class XmlTreeTest extends XmlTree { | |
/* | |
<xmllight> | |
<nodename2> | |
<value_name1=value> | |
<value_name2=value> | |
</nodename2> | |
<nodename1> | |
<a> | |
<b> | |
<c> | |
<value_name1=value> | |
</c> | |
</b> | |
</a> | |
<value_name1=3242> | |
<value_name2=value> | |
</nodename1> | |
<value_name1=value> | |
</xmllight> | |
*/ | |
final static String validXML = "<xmllight><nodename1><value_name1=3 24 2><a><b><c><value_name1=value></c></b></a><value_name2=value></nodename1><nodename2><value_name1=value><value_name2=value></nodename2><value_name1=value></xmllight>"; | |
//unclosed tags | |
/* | |
<xmllight> | |
<nodename2> | |
<value_name1=value> | |
<value_name2=value> | |
</nodename2> | |
<nodename1> | |
<a> | |
<b> | |
<c> | |
<value_name1=value> | |
</c> | |
<- </b> is missing | |
</a> | |
<value_name1=3242> | |
<value_name2=value> | |
</nodename1> | |
<value_name1=value> | |
</xmllight> | |
*/ | |
final static String invalidXmlA = "<xmllight><nodename1><value_name1=3 24 2><a><b><c><value_name1=value></c></a><value_name2=value></nodename1><nodename2><value_name1=value><value_name2=value></nodename2><value_name1=value></xmllight>"; | |
//invalid value | |
/* | |
<xmllight> | |
<nodename2> | |
<value_name1=value> | |
<value_name2=value> | |
</nodename2> | |
<nodename1> | |
<a> | |
<b> | |
<c> | |
<value_name1=> <- Empty value | |
</c> | |
</b> | |
</a> | |
<value_name1=3242> | |
<value_name2=value> | |
</nodename1> | |
<value_name1=value> | |
</xmllight> | |
*/ | |
final static String invalidXmlB = "<xmllight><nodename1><value_name1=3 24 2><a><b><c><value_name1=></c></b></a><value_name2=value></nodename1><nodename2><value_name1=value><value_name2=value></nodename2><value_name1=value></xmllight>"; | |
//Duplicate tags | |
/* | |
<xmllight> | |
<nodename2> | |
<value_name1=value> | |
<value_name2=value> | |
</nodename2> | |
<nodename2> | |
<a> | |
<b> | |
<c> | |
<value_name1=value> | |
</c> | |
</b> | |
</a> | |
<value_name1=3242> | |
<value_name2=value> | |
</nodename2> | |
<value_name1=value> | |
</xmllight> | |
*/ | |
final static String invalidXmlC = "<xmllight><nodename2><value_name1=3 24 2><a><b><c><value_name1=value></c></b></a><value_name2=value></nodename2><nodename2><value_name1=value><value_name2=value></nodename2><value_name1=value></xmllight>"; | |
@Test | |
public void testLoad() { | |
try { | |
XmlTree.load(new StringReader(XmlTreeTest.validXML)); | |
} catch (MisformatedInputException e) { | |
fail("Input xml should be valid : " + e); | |
} catch (AlreadyAvailable e) { | |
fail("Input xml should be valid : " + e); | |
} catch (IOException e) { | |
fail("Input stream should be readable : " + e); | |
} | |
} | |
@Test(expected = MisformatedInputException.class) | |
public void testLoadWithEmptyString() throws MisformatedInputException, AlreadyAvailable, IOException { | |
XmlTree.load(new StringReader("")); | |
} | |
@Test(expected = MisformatedInputException.class) | |
public void testLoadWithinvalidXmlA() throws MisformatedInputException, AlreadyAvailable, IOException { | |
XmlTree.load(new StringReader(XmlTreeTest.invalidXmlA)); | |
} | |
@Test(expected = MisformatedInputException.class) | |
public void testLoadWithinvalidXmlB() throws MisformatedInputException, AlreadyAvailable, IOException { | |
XmlTree.load(new StringReader(XmlTreeTest.invalidXmlB)); | |
} | |
@Test(expected = AlreadyAvailable.class) | |
public void testLoadWithinvalidXmlC() throws MisformatedInputException, AlreadyAvailable, IOException { | |
XmlTree.load(new StringReader(XmlTreeTest.invalidXmlC)); | |
} | |
@Test | |
public void testSave() { | |
try { | |
XmlTree t1 = XmlTree.load(new StringReader(XmlTreeTest.validXML)); | |
StringWriter out = new StringWriter(); | |
t1.safe(out); | |
XmlTree t2 = XmlTree.load(new StringReader(out.toString())); | |
assertEquals(t2.toString(), t1.toString()); | |
} catch (MisformatedInputException e) { | |
fail("Input xml should be valid : " + e); | |
} catch (AlreadyAvailable e) { | |
fail("Input xml should be valid : " + e); | |
} catch (IOException e) { | |
fail("Input stream should be valid : " + e); | |
} | |
} | |
@Test | |
public void testGetNode() { | |
try { | |
XmlTree t = XmlTree.load(new StringReader(XmlTreeTest.validXML)); | |
t.getNode("nodename1"); | |
} catch (MisformatedInputException e) { | |
fail("Input xml should be valid : " + e); | |
} catch (AlreadyAvailable e) { | |
fail("Input xml should be valid : " + e); | |
} catch (IOException e) { | |
fail("Input stream should be valid : " + e); | |
} catch (NotAvailable e) { | |
fail("'nodename1' exists and must be available : " + e); | |
} catch (NoNodeException e) { | |
fail("Root element must be a node! : " + e); | |
} | |
} | |
@Test(expected = NotAvailable.class) | |
public void testGetNodeWithInvalidTag() throws MisformatedInputException, AlreadyAvailable, IOException, NotAvailable, NoNodeException { | |
XmlTree t = XmlTree.load(new StringReader(XmlTreeTest.validXML)); | |
t.getNode("nodename9"); | |
} | |
@Test(expected = NoNodeException.class) | |
public void testGetNodeWithValue() throws MisformatedInputException, AlreadyAvailable, IOException, NotAvailable, NoNodeException { | |
XmlTree t = XmlTree.load(new StringReader(XmlTreeTest.validXML)); | |
t.getNode("value_name1").getNode("abc"); | |
} | |
@Test | |
public void testGetValue() { | |
try { | |
XmlTree t = XmlTree.load(new StringReader(XmlTreeTest.validXML)); | |
String result = t.getNode("value_name1").getValue(); | |
assertEquals("value", result); | |
} catch (MisformatedInputException e) { | |
fail("Input xml should be valid : " + e); | |
} catch (AlreadyAvailable e) { | |
fail("Input xml should be valid : " + e); | |
} catch (IOException e) { | |
fail("Input stream should be valid : " + e); | |
} catch (NotAvailable e) { | |
fail("'value_name1' exists and must be available : " + e); | |
} catch (NoNodeException e) { | |
fail("Root element must be a node! : " + e); | |
} catch (NoValueException e) { | |
fail("'value_name1' must hava a value : " + e); | |
} | |
} | |
@Test(expected = NoValueException.class) | |
public void testGetValueWithNode() throws MisformatedInputException, AlreadyAvailable, IOException, NoValueException, NotAvailable, NoNodeException { | |
XmlTree t = XmlTree.load(new StringReader(XmlTreeTest.validXML)); | |
t.getNode("nodename2").getValue(); | |
} | |
@Override | |
protected String toString(String name, String indent) { | |
// TODO Auto-generated method stub | |
return null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment