Skip to content

Instantly share code, notes, and snippets.

@fridolin-koch
Created March 15, 2013 13:48
Show Gist options
  • Save fridolin-koch/5169989 to your computer and use it in GitHub Desktop.
Save fridolin-koch/5169989 to your computer and use it in GitHub Desktop.
/*
* 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