package org.jaxen.dom4j;

import java.util.List;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Text;
import org.dom4j.io.SAXReader;

import org.jaxen.dom4j.XPath;

import junit.framework.TestCase;

public class XPathOrderTest extends TestCase
{
    private static final String BASIC_XML = "xml/order.xml";

    public XPathOrderTest(String name)
    {
        super( name );
    }

    public void setUp()
    {
    }

    public void tearDown()
    {
    }

    public void testConstruction()
    {
    }

    public void testSelection()
    {
        try
        {
            doit();
        }
        catch( Exception e )
        {
            fail( e.getMessage() );
        }
    }

    public void doit()
        throws Exception
    {
        SAXReader reader = new SAXReader();

        Document doc = reader.read( BASIC_XML );

        XPath xpath = new XPath( "*|text()" );

        List results = xpath.selectNodes( doc.getRootElement() );

        assertEquals( 5, results.size() );

        Iterator iter = results.iterator();

        assertTrue( iter.next() instanceof Text );
        assertTrue( iter.next() instanceof Element );
        assertTrue( iter.next() instanceof Text );
        assertTrue( iter.next() instanceof Element );
        assertTrue( iter.next() instanceof Text );

        assertTrue( ! iter.hasNext() );

     }
}
