package org.simpleframework.xml.stream; import java.io.StringWriter; import org.simpleframework.xml.ValidationTestCase; public class NodeWriterTest extends ValidationTestCase { public void testEarlyCommit() throws Exception { StringWriter out = new StringWriter(); OutputNode root = NodeBuilder.write(out); boolean failure = false; try { root.commit(); }catch(Exception e) { e.printStackTrace(); failure = true; } assertTrue("Early commit should fail", failure); } public void testBasicWrite() throws Exception { StringWriter out = new StringWriter(); OutputNode root = NodeBuilder.write(out).getChild("root"); assertTrue(root.isRoot()); assertEquals("root", root.getName()); root.setAttribute("id", "test"); root.setAttribute("name", "testRoot"); assertEquals("test", root.getAttributes().get("id").getValue()); assertEquals("testRoot", root.getAttributes().get("name").getValue()); OutputNode childOfRoot = root.getChild("child-of-root"); childOfRoot.setAttribute("name", "child of root"); assertFalse(childOfRoot.isRoot()); assertEquals("child-of-root", childOfRoot.getName()); assertEquals("child of root", childOfRoot.getAttributes().get("name").getValue()); OutputNode childOfChildOfRoot = childOfRoot.getChild("child-of-child-of-root"); childOfChildOfRoot.setValue("I am a child of the child-of-root element and a grand child of the root element"); assertFalse(childOfChildOfRoot.isRoot()); assertEquals("child-of-child-of-root", childOfChildOfRoot.getName()); OutputNode anotherChildOfRoot = root.getChild("another-child-of-root"); anotherChildOfRoot.setAttribute("id", "yet another child of root"); anotherChildOfRoot.setValue("I am a sibling to child-of-root"); assertFalse(anotherChildOfRoot.isRoot()); assertEquals("another-child-of-root", anotherChildOfRoot.getName()); OutputNode finalChildOfRoot = root.getChild("final-child-of-root"); finalChildOfRoot.setValue("this element is a child of root"); assertFalse(finalChildOfRoot.isRoot()); assertTrue(root.isRoot()); root.commit(); validate(out.toString()); } public void testWrite() throws Exception { StringWriter out = new StringWriter(); OutputNode root = NodeBuilder.write(out).getChild("root"); root.setAttribute("version", "1.0"); assertTrue(root.isRoot()); assertEquals("root", root.getName()); OutputNode firstChild = root.getChild("first-child"); firstChild.setAttribute("key", "1"); firstChild.setValue("some value for first child"); assertFalse(firstChild.isRoot()); assertEquals("1", firstChild.getAttributes().get("key").getValue()); OutputNode secondChild = root.getChild("second-child"); secondChild.setAttribute("key", "2"); secondChild.setValue("some value for second child"); assertTrue(root.isRoot()); assertFalse(secondChild.isRoot()); assertEquals(firstChild.getChild("test"), null); OutputNode test = secondChild.getChild("test"); test.setValue("test value"); assertEquals(test.getName(), "test"); assertEquals(test.getValue(), "test value"); secondChild.commit(); assertEquals(secondChild.getChild("example"), null); OutputNode thirdChild = root.getChild("third-child"); thirdChild.setAttribute("key", "3"); thirdChild.setAttribute("name", "three"); assertEquals(thirdChild.getAttributes().get("key").getValue(), "3"); assertEquals(thirdChild.getAttributes().get("name").getValue(), "three"); thirdChild.commit(); assertEquals(thirdChild.getChild("foo"), null); assertEquals(thirdChild.getChild("bar"), null); OutputNode fourthChild = root.getChild("fourth-child"); fourthChild.setAttribute("key", "4"); fourthChild.setAttribute("name", "four"); OutputNode fourthChildChild = fourthChild.getChild("fourth-child-child"); fourthChildChild.setAttribute("name", "foobar"); fourthChildChild.setValue("some text for grand-child"); fourthChild.commit(); assertTrue(fourthChildChild.isCommitted()); assertTrue(fourthChild.isCommitted()); assertEquals(fourthChildChild.getChild("blah"), null); assertEquals(fourthChild.getChild("example"), null); root.commit(); validate(out.toString()); } }