/*
* Copyright (C) 2010 Brockmann Consult GmbH (info@brockmann-consult.de)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option)
* any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see http://www.gnu.org/licenses/
*/
package com.bc.ceres.binding.dom;
import junit.framework.TestCase;
import java.util.Arrays;
import java.util.HashSet;
public abstract class AbstractDomElementTest extends TestCase {
protected abstract DomElement createDomElement(String name);
protected abstract DomElement createDomElement(String name, String value);
public void testSingleElement() {
DomElement element = createDomElement("x", "8");
assertEquals("x", element.getName());
assertEquals("8", element.getValue());
assertEquals("<x>8</x>", element.toXml());
element = createDomElement("x", null);
assertEquals("x", element.getName());
assertEquals(null, element.getValue());
assertEquals("<x/>", element.toXml());
final String name = "x";
element = createDomElement(name);
assertEquals("x", element.getName());
assertEquals(null, element.getValue());
assertEquals("<x/>", element.toXml());
}
public void testAttribues() {
DomElement element = createDomElement("point");
assertNotNull(element.getAttributeNames());
assertEquals(0, element.getAttributeNames().length);
element.setAttribute("x", "56");
element.setAttribute("y", "24");
element.setAttribute("z", "98");
assertNotNull(element.getAttributeNames());
final HashSet<String> names = new HashSet<String>(Arrays.asList(element.getAttributeNames()));
assertEquals(3, names.size());
assertTrue(names.contains("x"));
assertTrue(names.contains("y"));
assertTrue(names.contains("z"));
assertEquals("56", element.getAttribute("x"));
assertEquals("24", element.getAttribute("y"));
assertEquals("98", element.getAttribute("z"));
assertEquals(null, element.getAttribute("w"));
String xml = element.toXml();
assertTrue(xml.startsWith("<point "));
assertTrue(xml.contains("x=\"56\""));
assertTrue(xml.contains("y=\"24\""));
assertTrue(xml.contains("z=\"98\""));
assertTrue(xml.endsWith("/>"));
}
public void testChildren() {
DomElement element = createDomElement("point");
assertEquals(0, element.getChildCount());
element.createChild("x").setValue("56");
element.addChild(createDomElement("y", "24"));
element.addChild(createDomElement("z", "98"));
assertNull(element.getParent());
assertNotNull(element.getChildCount());
assertEquals(3, element.getChildCount());
assertNotNull(element.getChild("x"));
assertNotNull(element.getChild("y"));
assertNotNull(element.getChild("z"));
assertNull(element.getChild("w"));
assertEquals("56", element.getChild("x").getValue());
assertEquals("24", element.getChild("y").getValue());
assertEquals("98", element.getChild("z").getValue());
assertSame(element, element.getChild("x").getParent());
assertSame(element, element.getChild("y").getParent());
assertSame(element, element.getChild("z").getParent());
assertEquals("" +
"<point>\n" +
"<x>56</x>\n" +
"<y>24</y>\n" +
"<z>98</z>\n" +
"</point>",
element.toXml().replace(" ", ""));
}
public void testToXmlWithAttributesAndChildren() {
DomElement element = createDomElement("layer");
element.setAttribute("id", "a62b98ff5");
element.createChild("name").setValue("ROI");
element.createChild("visible").setValue("true");
element.createChild("configuration");
element.getChild("configuration").createChild("outlineColor").setValue("23,45,230");
element.getChild("configuration").createChild("fillColor").setValue("123, 64,30");
element.getChild("configuration").createChild("transparency").setValue("0.6");
String xml = element.toXml();
//System.out.println("xml = " + xml);
assertEquals("" +
"<layer id=\"a62b98ff5\">\n" +
"<name>ROI</name>\n" +
"<visible>true</visible>\n" +
"<configuration>\n" +
"<outlineColor>23,45,230</outlineColor>\n" +
"<fillColor>123, 64,30</fillColor>\n" +
"<transparency>0.6</transparency>\n" +
"</configuration>\n" +
"</layer>",
xml.replace(" ", ""));
}
}