Package test.core

Source Code of test.core.TestElementListFree

/*
* TestElementListFree.java
*
* Created on 11 de julio de 2007, 11:41
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package test.core;

import java.util.ListIterator;
import org.itsnat.core.domutil.ElementGroupManager;
import org.itsnat.core.html.ItsNatHTMLDocument;
import org.itsnat.core.domutil.ElementListFree;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import test.shared.TestUtil;

/**
*
* @author jmarranz
*/
public class TestElementListFree
{

    /**
     * Creates a new instance of TestElementListFree
     */
    public TestElementListFree(ItsNatHTMLDocument itsNatDoc)
    {
        test(itsNatDoc);
    }

    public void test(ItsNatHTMLDocument itsNatDoc)
    {
        Document doc = itsNatDoc.getDocument();
        Element parent = doc.getElementById("testElementListFreeId");

        ElementGroupManager factory = itsNatDoc.getElementGroupManager();

        // Modo master
        ElementListFree elemList = factory.createElementListFree(parent,true);

        testElementListFree(elemList,itsNatDoc);

        // Testeamos el modo master = false (slave)

        elemList = factory.createElementListFree(parent,false);

        testElementListFree(elemList,itsNatDoc); // Idem que el modo master

        // Testeamos de nuevo para ver si funciona de verdad el modo slave
        // la lista est� vac�a en este momento

        parent.appendChild(doc.createElement("span"));
        parent.appendChild(doc.createElement("span"));
        parent.appendChild(doc.createElement("span"));

        elemList = factory.createElementListFree(parent,false);

        TestUtil.checkError(elemList.size() == 3);

        TestUtil.checkError(elemList.getElementAt(2) != null);
    }

    public void testElementListFree(ElementListFree elemList,ItsNatHTMLDocument itsNatDoc)
    {
        TestUtil.checkError(elemList.size() == 0)// Se supone vac�a

        Document doc = itsNatDoc.getDocument();

        elemList.addElement(doc.createElement("span"));
        elemList.addElement(doc.createElement("input"));
        elemList.insertElementAt(1,doc.createElement("div"));

        // Orden resultante: <span> <div> <input>
        TestUtil.checkError(elemList.getListElementInfoAt(2).getIndex() == 2); // Para testear que se ha actualizado de posici�n el <input>
        if (elemList.isMaster())
        {
            // La misma instancia
            TestUtil.checkError(elemList.getListElementInfoAt(2) == elemList.getListElementInfoAt(2));
        }
        else
        {
            // Diferentes instancias
            TestUtil.checkError(elemList.getListElementInfoAt(2) != elemList.getListElementInfoAt(2));
        }

        elemList.moveElement(0,1,1); // Desplaza las dos primeras filas a ser las dos finales
        TestUtil.checkError(elemList.getElementAt(0).getTagName().equals("input"));
        TestUtil.checkError(elemList.getElementAt(1).getTagName().equals("span"));
        TestUtil.checkError(elemList.getElementAt(2).getTagName().equals("div"));
        TestUtil.checkError(elemList.getListElementInfoAt(1).getIndex() == 1);

        elemList.moveElement(1,2,0); // Las deja como estaba
        TestUtil.checkError(elemList.getElementAt(0).getTagName().equals("span"));
        TestUtil.checkError(elemList.getElementAt(1).getTagName().equals("div"));
        TestUtil.checkError(elemList.getElementAt(2).getTagName().equals("input"));

        int count = 1;
        for(ListIterator<Element> it = elemList.listIterator(count); it.hasNext(); )
        {
            Element elem = it.next();
            count++;
            TestUtil.checkError(it.nextIndex() == count);
        }

        TestUtil.checkError(count == elemList.size());

        count = elemList.size();
        for(ListIterator<Element> it = elemList.listIterator(count); it.hasPrevious(); )
        {
            Element elem = it.previous();
            count--;
            TestUtil.checkError(it.previousIndex() == count - 1);
        }

        TestUtil.checkError(count == 0);

        for(ListIterator<Element> it = elemList.listIterator(); it.hasNext(); )
        {
            Element elem = it.next();
            it.set(doc.createElement("div"));
        }

        for(int i = 0; i < elemList.size(); i++)
        {
            TestUtil.checkError(elemList.getElementAt(i).getTagName().equals("div"));
        }

        for(ListIterator<Element> it = elemList.listIterator(elemList.size()); it.hasPrevious(); )
        {
            Element elem = it.previous();
            it.set(doc.createElement("input"));
        }

        for(int i = 0; i < elemList.size(); i++)
        {
            TestUtil.checkError(elemList.getElementAt(i).getTagName().equals("input"));
        }


        count = 0;
        for(ListIterator<Element> it = elemList.listIterator(); it.hasNext(); )
        {
            Element elem1 = it.next();
            Element elem2 = it.previous();
            Element elem3 = it.next();

            count++;

            // Esto tambi�n se cumple con una lista normal (ej. LinkedList)
            TestUtil.checkError(elem1 == elem2);
            TestUtil.checkError(elem2 == elem3);
        }

        TestUtil.checkError(count == elemList.size());

        count = elemList.size();
        for(ListIterator<Element> it = elemList.listIterator(); it.hasNext(); )
        {
            Element newElem = doc.createElement("input");
            it.add(newElem);
            it.next();
        }

        TestUtil.checkError((count * 2) == elemList.size());

        count = elemList.size();
        for(ListIterator<Element> it = elemList.listIterator(); it.hasNext(); )
        {
            Element newElem = doc.createElement("input");
            it.add(newElem);
            TestUtil.checkError(it.previous() == newElem);
            TestUtil.checkError(it.next() == newElem);
            it.next();
        }

        TestUtil.checkError((count * 2) == elemList.size());


        for(ListIterator<Element> it = elemList.listIterator(); it.hasNext(); )
        {
            Element elem = it.next();
            it.remove();
        }

        TestUtil.checkError(elemList.size() == 0)// La dejamos vac�a
    }

}
TOP

Related Classes of test.core.TestElementListFree

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.