/*
 * Test Case
 */
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.EntityReference;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;


public class Test {

	DocumentBuilderFactory dbf;
	DocumentBuilder db;

	/**
	 * Runs the test case.
	 */
	public void runTest1() {
		System.out.println("Running test..." + "\n");
		try {
			
			Document doc = (Document) db.parse("test.xml");
			
			NodeList itemList;
	        Element pElem, qElem;
	        EntityReference newER;
	        Text text1;
	        Text text2;
	        Text ERChild;
	        
	        
	        
	        itemList = doc.getElementsByTagName("p");
	        pElem = (Element) itemList.item(0);
	        qElem = (Element) pElem.getNextSibling();
	       
	        text1 = (Text)pElem.getFirstChild();
	        newER = (EntityReference)text1.getNextSibling();
	        ERChild = (Text)newER.getFirstChild();
	        
	        System.out.println("getWholeText on text1 " + text1.getWholeText());
	        System.out.println("getWholeText on ERChild " + ERChild.getWholeText() + "\n"); 
	        
	        text1 = (Text)qElem.getFirstChild();
	        text2 = (Text)qElem.getLastChild();
	        
	        System.out.println("getWholeText on text1 " + text1.getWholeText());
	        System.out.println("getWholeText on text2 " + text2.getWholeText() + "\n"); 
	        
		} catch (Exception e) {
			System.err.println("Test 1 Failed:" + e.getMessage());
			e.printStackTrace();
		}
	}

	

	public void init() {
		try {
			dbf = DocumentBuilderFactory.newInstance();
			dbf.setNamespaceAware(true);
			dbf.setExpandEntityReferences(false);
			db = dbf.newDocumentBuilder();
		} catch (Exception e) {
			System.out.println("Initialization Failed:" + e.getMessage());
		}
	}

	/**
	 * @param args command line arguments
	 */
	public static void main(String[] args) {
		Test t = new Test();
		t.init();
		
		t.runTest1();
	}


}

