/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2008 jOpenDocument, by ILM Informatique. All rights reserved. * * The contents of this file are subject to the terms of the GNU * General Public License Version 3 only ("GPL"). * You may not use this file except in compliance with the License. * You can obtain a copy of the License at http://www.gnu.org/licenses/gpl-3.0.html * See the License for the specific language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each file. * */ package org.jopendocument.dom; import junit.framework.TestCase; import org.jdom.Element; public class ChildCreatorTest extends TestCase { protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } public void testCreate() throws Exception { final XMLVersion ns = XMLVersion.getOD(); final Element parent = new Element("p", ns.getTEXT()); final ChildCreator childCreator = new ChildCreator(parent, new Element("un", ns.getTEXT()), new Element("deux", ns.getTEXT()), new Element("trois", ns.getSTYLE()), new Element("quatre", ns .getOFFICE())); try { childCreator.getChild(ns.getOFFICE(), "un", true); fail("un is not in office namespace"); } catch (IllegalArgumentException e) { // ok } final Element newChild = childCreator.getChild(ns.getSTYLE(), "trois", true); assertEquals(ns.getSTYLE(), newChild.getNamespace()); assertEquals("trois", newChild.getName()); // parent was empty assertSame(newChild, parent.getChildren().get(0)); // getChild() only creates once assertSame(newChild, childCreator.getChild(ns.getSTYLE(), "trois", true)); assertEquals(1, parent.getContentSize()); // except if we use addChild() final Element added = childCreator.addChild(ns.getSTYLE(), "trois"); assertNotSame(newChild, added); // added after the existing "trois" assertSame(added, parent.getChildren().get(1)); assertEquals(2, parent.getContentSize()); parent.getChildren().remove(1); childCreator.getChild(ns.getTEXT(), "deux", true); // deux was prepended assertSame(newChild, parent.getChildren().get(1)); assertEquals(2, parent.getContentSize()); // quatre was appended assertSame(childCreator.getChild(ns.getOFFICE(), "quatre", true), parent.getChildren().get(2)); assertEquals(3, parent.getContentSize()); // deux remains assertSame(newChild, parent.getChildren().get(1)); // un becomes the first assertSame(childCreator.getChild(ns.getTEXT(), "un", true), parent.getChildren().get(0)); assertEquals(4, parent.getContentSize()); } }