blob: 00e5a682c260ee9e38f65273a6367d4ab4343709 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.oodt.xmlquery;
import java.io.*;
import java.util.*;
import org.apache.oodt.commons.util.*;
import junit.framework.*;
import org.w3c.dom.*;
import org.xml.sax.*;
/** Unit test the {@link Header} class.
*
* @author Kelly
*/
public class HeaderTest extends TestCase {
/** Construct the test case for the {@link Header} class. */
public HeaderTest(String name) {
super(name);
}
public void testNoArgsCtor() {
Header blank = new Header();
assertEquals("UNKNOWN", blank.getName());
assertNull(blank.getType());
assertNull(blank.getUnit());
}
public void testSimpleCtor() {
Header simple = new Header("name");
assertEquals("name", simple.getName());
assertNull(simple.getType());
assertNull(simple.getUnit());
}
public void testFullCtor() {
Header full = new Header("name", "type", "unit");
assertEquals("name", full.getName());
assertEquals("type", full.getType());
assertEquals("unit", full.getUnit());
}
public void testSetters() {
Header h = new Header("name", "type", "unit");
assertEquals("name", h.getName());
h.setName("newName");
assertEquals("newName", h.getName());
assertEquals("type", h.getType());
h.setType("newType");
assertEquals("newType", h.getType());
assertEquals("unit", h.getUnit());
h.setUnit("newUnit");
assertEquals("newUnit", h.getUnit());
}
public void testObjectMethods() {
Header h1 = new Header("name1", "type1", "unit1");
Header h2 = new Header("name1", "type1", "unit1");
Header h3 = new Header("name2", "type2", "unit2");
assertEquals(h1, h1);
assertEquals(h1, h2);
assertTrue(!h1.equals(h3));
Header h4 = (Header) h3.clone();
assertEquals(h3, h4);
assertTrue(h3 != h4);
}
public void testXML() throws Exception {
Document doc = XML.createDocument();
Element bogus = doc.createElement("bogus");
try {
Header h0 = new Header(bogus);
fail("Header constructor failed to throw exception when given invalid XML node");
} catch (IllegalArgumentException good) {}
Header h1 = new Header("name1", "type1", "unit1");
Node root = h1.toXML(doc);
assertEquals("headerElement", root.getNodeName());
NodeList children = root.getChildNodes();
for (int i = 0; i < children.getLength(); ++i) {
Node child = children.item(i);
if ("elemName".equals(child.getNodeName())) {
assertEquals("name1", XML.text(child));
} else if ("elemType".equals(child.getNodeName())) {
assertEquals("type1", XML.text(child));
} else if ("elemUnit".equals(child.getNodeName())) {
assertEquals("unit1", XML.text(child));
} else fail("Unknown node \"" + child.getNodeName() + "\" in XML result");
}
Header h2 = new Header(root);
assertEquals(h1, h2);
}
public void testMultipleHeaders() throws Exception {
Document doc = XML.createDocument();
Element resultHeader = doc.createElement("resultHeader");
Element headerElement = doc.createElement("headerElement");
resultHeader.appendChild(headerElement);
XML.add(headerElement, "elemName", "name1");
headerElement = doc.createElement("headerElement");
resultHeader.appendChild(headerElement);
XML.add(headerElement, "elemName", "name2");
XML.add(headerElement, "elemType", "type2");
headerElement = doc.createElement("headerElement");
resultHeader.appendChild(headerElement);
XML.add(headerElement, "elemName", "name3");
XML.add(headerElement, "elemUnit", "unit3");
headerElement = doc.createElement("headerElement");
resultHeader.appendChild(headerElement);
XML.add(headerElement, "elemName", "name4");
XML.add(headerElement, "elemType", "type4");
XML.add(headerElement, "elemUnit", "unit4");
List headers = Header.createHeaders(resultHeader);
Header h1 = new Header("name1");
Header h2 = new Header("name2", "type2", null);
Header h3 = new Header("name3", null, "unit3");
Header h4 = new Header("name4", "type4", "unit4");
assertEquals(h1, headers.get(0));
assertEquals(h2, headers.get(1));
assertEquals(h3, headers.get(2));
assertEquals(h4, headers.get(3));
}
}