package org.jdom.tests;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.ui.LoadingTestRunner;

import org.jdom.IllegalNameException;
import org.jdom.Element;
import org.jdom.Namespace;


public class ElementTest extends TestCase {

  public ElementTest(String name) {
    super(name); 
  }

  public void testSimpleConstructor() {
    
    Element e = new Element("element");
    assertNotNull(e);
    assertEquals(e.getName(), "element");
    assertEquals(e.getQualifiedName(), "element");
    assertEquals(e.getNamespacePrefix(), "");
    assertEquals(e.getNamespace(), Namespace.NO_NAMESPACE);
    assertEquals(e.getNamespaceURI(), "");
    assertEquals(e.getParent(), null);
    assert(!e.isRootElement());
    
    try {
      new Element("gf:element");
      fail("Expected IllegalNameException");
    }
    catch (IllegalNameException ex) { // expected result
    } 
    
  }
  
  public void testNamespaceURIConstructor() {
    
    String namespaceURI = "http://www.namespace.com/somewhere";
    Element e = new Element("element", namespaceURI);
    assertNotNull(e);
    assertEquals(e.getName(), "element");
    assertEquals(e.getQualifiedName(), "element");
    assertEquals(e.getNamespacePrefix(), "");
    assert(!e.getNamespace().equals(Namespace.NO_NAMESPACE));
    assertEquals(e.getNamespaceURI(), namespaceURI);
    assertEquals(e.getParent(), null);
    assert(!e.isRootElement());
    
    try {
      new Element("gf:element", namespaceURI);
      fail("Expected IllegalNameException");
    }
    catch (IllegalNameException ex) { // expected result
    } 
    
  }
  
  public void testNamespacePrefixURIConstructor() {
    
    String namespaceURI = "http://www.namespace.com/somewhere2";
    String namespacePrefix = "abc";
    String localName = "element";
    Element e = new Element(localName, namespacePrefix, namespaceURI);
    assertNotNull(e);
    assertEquals(e.getQualifiedName(), namespacePrefix + ":" + localName);
    assert(!e.getNamespace().equals(Namespace.NO_NAMESPACE));
    assertSame(e.getNamespace(), Namespace.getNamespace(namespacePrefix, namespaceURI));
    assertEquals(e.getNamespaceURI(), namespaceURI);
    assertEquals(e.getParent(), null);
    assert(!e.isRootElement());
    
    try {
      new Element("element", namespaceURI, namespacePrefix);
      fail("Expected IllegalNameException");
    }
    catch (IllegalNameException ex) { // expected result
    } 
    
    try {
      new Element("gf:element", namespacePrefix, namespaceURI);
      fail("Expected IllegalNameException");
    }
    catch (IllegalNameException ex) { // expected result
    } 
    
  } 
  
  
  public void testNamespaceConstructor() {
    
    String namespaceURI = "http://www.namespace.com/somewhere3";
    String namespacePrefix = "rtf";
    Namespace namespace = Namespace.getNamespace(namespacePrefix, namespaceURI);
    String localName = "element";
    Element e = new Element(localName, namespace);
    assertNotNull(e);
    assertEquals(e.getQualifiedName(), namespace.getPrefix() + ":" + localName);
    assert(!e.getNamespace().equals(Namespace.NO_NAMESPACE));
    assertSame(e.getNamespace(), Namespace.getNamespace(namespacePrefix, namespaceURI));
    assertEquals(e.getNamespaceURI(), namespace.getURI());
    assertEquals(e.getParent(), null);
    assert(!e.isRootElement());
    
    try {
      new Element("gf:element", namespace);
      fail("Expected IllegalNameException");
    }
    catch (IllegalNameException ex) { // expected result
    } 
    
  } 
  
  
  public void testAddAttribute() {}
  public void testAddAttributeNameValue() {} 
  public void testAddChildComment() {} 
  public void testAddChildElement() {} 
  public void testAddChildEntity() {} 
  public void testAddChildProcessingInstruction() {} 
  public void testAddChildText() {} 
  public void testClone() {} 
  public void testGetAttributeByName() {} 
  public void testGetAttributeByNameAndNamespace() {} 
  public void testGetAttributeByNameAndURI() {} 
  public void testGetAttributes() {} 
  public void testGetAttributeValueByNameAndNamespace() {} 
  public void testGetAttributeValueByNameAndURI() {} 
  public void testGetAttributeValueByName() {} 
  public void testGetBooleanContent() {} 
  public void testGetBooleanContentWithDefault() {} 
  public void testGetByteContent() {}  
  public void testGetByteContentWithDefault() {}  
  public void testGetCharContent() {}  
  public void testGetCharContentWithDefault() {}  
  public void testGetChildByName() {}  
  public void testGetChildByNameAndNamespace() {}  
  public void testGetChildByNameAndURI() {} 
  public void testGetChildren() {} 
  public void testGetChildrenByName() {} 
  public void testGetChildrenByNameAndNamespace() {} 
  public void testGetChildrenByNameAndURI() {} 
  public void testGetContent() {} 
  public void testGetCopyByName() {}  
  public void testGetCopyByNameAndNamespace() {} 
  public void testGetCopyByNameAndURI() {}
  public void testGetCopyByNameAndURIAndPrefix() {}
  public void testGetDoubleContent() {}
  public void testGetDoubleContentWithDefault() {} 
  public void testGetFloatContent() {}
  public void testGetFloatContentWithDefault() {} 
  public void testGetIntContent() {}
  public void testGetIntContentWithDefault() {} 
  public void testGetLongContent() {}
  public void testGetLongContentWithDefault() {} 
  public void testGetMixedContent() {}  
  public void testGetName() {} 
  public void testGetNamespace() {} 
  public void testGetNamespacePrefix() {} 
  public void testGetNamespaceURI() {}  
  public void testGetParent() {} 
  public void testGetQualifiedName() {} 
  public void testHasMixedContent() {}  
  public void testIsRootElement() {} 
  public void testRemoveAttributeByName() {}
  public void testRemoveAttributeByNameAndNamespace() {}
  public void testRemoveAttributeByNameAndURI() {}
  public void testRemoveChildComment() {}
  public void testRemoveChildElement() {}
  public void testRemoveChildEntity() {}
  public void testRemoveChildProcessingInstruction() {} 
  public void testRemoveChildByName() {}
  public void testRemoveChildByNameAndNamespace() {}
  public void testRemoveChildByNameAndURI() {}
  public void testRemoveChildren() {}
  public void testRemoveChildrenByName() {} 
  public void testRemoveChildrenByNameAndNamespace() {}
  public void testRemoveChildrenByNameAndURI() {}
  public void testSetAttributes() {}  
  public void testSetChildren() {} 
  public void testSetContent() {} 
  public void testSetIsRootElement() {} 
  public void testSetMixedContent() {} 
  
  
  public static Test suite() { 
    return new TestSuite(ElementTest.class); 
  }

  public static void main (String[] args) {
    String[] tests = {"org.jdom.tests.ElementTest"};
    LoadingTestRunner.main(tests);
  }
  
}