Package de.ailis.jollada.model

Source Code of de.ailis.jollada.model.ElementsTest

/*
* Copyright (C) 2010 Klaus Reimer <k@ailis.de>
* See LICENSE.txt for licensing information.
*/

package de.ailis.jollada.model;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import de.ailis.jollada.model.Document;
import de.ailis.jollada.model.Elements;
import de.ailis.jollada.model.Node;
import de.ailis.jollada.model.Nodes;


/**
* Tests the Elements class.
*
* @author Klaus Reimer (k@ailis.de)
*/

public class ElementsTest
{
    /**
     * Tests the default constructor
     */

    @Test
    public void testConstructor()
    {
        final Node parent = new Node();
        final Elements<Node> elements = new Nodes(parent);

        final Node node = new Node();
        elements.add(node);
        assertSame(parent, node.getParent());
    }


    /**
     * Tests the default constructor with null parent
     */

    @Test(expected = IllegalArgumentException.class)
    public void testConstructorWithNull()
    {
        new Nodes(null).toString();
    }


    /**
     * Tests adding a element.
     */

    @Test
    public void testAdd()
    {
        final Document oldDocument = new Document();
        final Node oldParent = new Node();
        oldDocument.addChild(oldParent);
        final Elements<Node> oldElements = new Nodes(oldParent);

        final Document document = new Document();

        final Node parent = new Node();
        document.addChild(parent);
        final Elements<Node> elements = new Nodes(parent);

        final Node child = new Node();
        child.setId("ID");
        child.setSid("SID");
        oldElements.add(child);

        elements.add(child);
        assertSame(document, child.getDocument());
        assertSame(parent, child.getParent());
        assertSame(child, document.getById("ID"));
        assertSame(child, document.getBySid("SID"));
        assertSame(child, parent.getBySid("SID"));

        // Check if node was correctly detached from old elements
        assertEquals(0, oldElements.size());
        assertNull(oldDocument.getById("ID"));
        assertNull(oldDocument.getBySid("SID"));
        assertNull(oldParent.getBySid("SID"));
    }


    /**
     * Tests inserting a element.
     */

    @Test
    public void testInsert()
    {
        final Document oldDocument = new Document();
        final Node oldParent = new Node();
        oldDocument.addChild(oldParent);
        final Elements<Node> oldElements = new Nodes(oldParent);

        final Document document = new Document();

        final Node parent = new Node();
        document.addChild(parent);
        final Elements<Node> elements = new Nodes(parent);

        final Node child = new Node();
        child.setId("ID");
        child.setSid("SID");
        oldElements.add(child);

        elements.add(0, child);
        assertSame(document, child.getDocument());
        assertSame(parent, child.getParent());
        assertSame(child, document.getById("ID"));
        assertSame(child, document.getBySid("SID"));
        assertSame(child, parent.getBySid("SID"));

        // Check if node was correctly detached from old elements
        assertEquals(0, oldElements.size());
        assertNull(oldDocument.getById("ID"));
        assertNull(oldDocument.getBySid("SID"));
        assertNull(oldParent.getBySid("SID"));
    }


    /**
     * Tests setting a element.
     */

    @Test
    public void testSet()
    {
        final Document oldDocument = new Document();
        final Node oldParent = new Node();
        oldDocument.addChild(oldParent);
        final Elements<Node> oldElements = new Nodes(oldParent);

        final Document document = new Document();

        final Node parent = new Node();
        document.addChild(parent);
        final Elements<Node> elements = new Nodes(parent);

        final Node child = new Node();
        child.setId("ID");
        child.setSid("SID");
        oldElements.add(child);

        elements.add(child);
        assertSame(child, elements.set(0, child));
        assertSame(document, child.getDocument());
        assertSame(parent, child.getParent());
        assertSame(child, document.getById("ID"));
        assertSame(child, document.getBySid("SID"));
        assertSame(child, parent.getBySid("SID"));

        // Check if node was correctly detached from old elements
        assertEquals(0, oldElements.size());
        assertNull(oldDocument.getById("ID"));
        assertNull(oldDocument.getBySid("SID"));
        assertNull(oldParent.getBySid("SID"));
    }


    /**
     * Tests removing a element.
     */

    @Test
    public void testRemove()
    {
        final Document oldDocument = new Document();
        final Node oldParent = new Node();
        oldDocument.addChild(oldParent);
        final Elements<Node> oldElements = new Nodes(oldParent);

        final Document document = new Document();

        final Node parent = new Node();
        document.addChild(parent);
        final Elements<Node> elements = new Nodes(parent);

        final Node child = new Node();
        child.setId("ID");
        child.setSid("SID");
        oldElements.add(child);

        elements.add(child);
        assertSame(document, child.getDocument());
        assertSame(parent, child.getParent());
        assertSame(child, document.getById("ID"));
        assertSame(child, document.getBySid("SID"));
        assertSame(child, parent.getBySid("SID"));

        assertTrue(elements.remove(child));

        // Check if node was correctly detached from elements
        assertEquals(0, elements.size());
        assertNull(child.getParent());
        assertNull(child.getDocument());
        assertNull(document.getById("ID"));
        assertNull(document.getBySid("SID"));
        assertNull(parent.getBySid("SID"));
    }


    /**
     * Tests removing a element by index.
     */

    @Test
    public void testRemoveByIndex()
    {
        final Document oldDocument = new Document();
        final Node oldParent = new Node();
        oldDocument.addChild(oldParent);
        final Elements<Node> oldElements = new Nodes(oldParent);

        final Document document = new Document();

        final Node parent = new Node();
        document.addChild(parent);
        final Elements<Node> elements = new Nodes(parent);

        final Node child = new Node();
        child.setId("ID");
        child.setSid("SID");
        oldElements.add(child);

        assertTrue(elements.add(child));
        assertSame(document, child.getDocument());
        assertSame(parent, child.getParent());
        assertSame(child, document.getById("ID"));
        assertSame(child, document.getBySid("SID"));
        assertSame(child, parent.getBySid("SID"));

        assertSame(child, elements.remove(0));

        // Check if node was correctly detached from elements
        assertEquals(0, elements.size());
        assertNull(child.getParent());
        assertNull(child.getDocument());
        assertNull(document.getById("ID"));
        assertNull(document.getBySid("SID"));
        assertNull(parent.getBySid("SID"));
    }


    /**
     * Tests removing a element which does not exist
     */

    @Test
    public void testRemoveNotExists()
    {
        final Node parent = new Node();
        final Elements<Node> elements = new Nodes(parent);
        final Node child = new Node();

        assertFalse(elements.remove(child));
    }


    /**
     * Tests clear() method.
     */

    @Test
    public void testClear()
    {
        final Document document = new Document();
        final Node parent = new Node();
        document.addChild(parent);
        final Elements<Node> elements = new Nodes(parent);

        final Node child = new Node();
        child.setId("ID");
        child.setSid("SID");

        elements.add(child);
        elements.clear();

        // Check if node was correctly detached from elements
        assertEquals(0, elements.size());
        assertNull(child.getParent());
        assertNull(child.getDocument());
        assertNull(document.getById("ID"));
        assertNull(document.getBySid("SID"));
        assertNull(parent.getBySid("SID"));
    }


    /**
     * Tests adding a list of elements.
     */

    @Test
    public void testAddAll()
    {
        final Document oldDocument = new Document();
        final Node oldParent = new Node();
        oldDocument.addChild(oldParent);
        final Elements<Node> oldElements = new Nodes(oldParent);

        final Document document = new Document();

        final Node parent = new Node();
        document.addChild(parent);
        final Elements<Node> elements = new Nodes(parent);

        final Node child = new Node();
        child.setId("ID");
        child.setSid("SID");
        oldElements.add(child);

        elements.addAll(oldElements);
        assertSame(document, child.getDocument());
        assertSame(parent, child.getParent());
        assertSame(child, document.getById("ID"));
        assertSame(child, document.getBySid("SID"));
        assertSame(child, parent.getBySid("SID"));

        // Check if node was correctly detached from old elements
        assertEquals(0, oldElements.size());
        assertNull(oldDocument.getById("ID"));
        assertNull(oldDocument.getBySid("SID"));
        assertNull(oldParent.getBySid("SID"));
    }


    /**
     * Tests adding a list of elements at specific index.
     */

    @Test
    public void testAddAllAtIndex()
    {
        final Document oldDocument = new Document();
        final Node oldParent = new Node();
        oldDocument.addChild(oldParent);
        final Elements<Node> oldElements = new Nodes(oldParent);

        final Document document = new Document();

        final Node parent = new Node();
        document.addChild(parent);
        final Elements<Node> elements = new Nodes(parent);

        final Node child = new Node();
        child.setId("ID");
        child.setSid("SID");
        oldElements.add(child);

        elements.addAll(0, oldElements);
        assertSame(document, child.getDocument());
        assertSame(parent, child.getParent());
        assertSame(child, document.getById("ID"));
        assertSame(child, document.getBySid("SID"));
        assertSame(child, parent.getBySid("SID"));

        // Check if node was correctly detached from old elements
        assertEquals(0, oldElements.size());
        assertNull(oldDocument.getById("ID"));
        assertNull(oldDocument.getBySid("SID"));
        assertNull(oldParent.getBySid("SID"));
    }


    /**
     * Tests removing a list of elements.
     */

    @Test
    public void testRemoveAll()
    {
        final Document document = new Document();
        final Node parent = new Node();
        document.addChild(parent);
        final Elements<Node> elements = new Nodes(parent);

        final Node child = new Node();
        child.setId("ID");
        child.setSid("SID");

        elements.add(child);
        final List<Object> toDelete = new ArrayList<Object>();
        toDelete.add(new Node());
        toDelete.add("test");
        assertFalse(elements.removeAll(toDelete));
        assertSame(parent, child.getParent());
        toDelete.add(child);
        assertTrue(elements.removeAll(toDelete));

        // Check if node was correctly detached from elements
        assertEquals(0, elements.size());
        assertNull(child.getParent());
        assertNull(child.getDocument());
        assertNull(document.getById("ID"));
        assertNull(document.getBySid("SID"));
        assertNull(parent.getBySid("SID"));
    }


    /**
     * Tests retaining a list of elements.
     */

    @Test
    public void testRetainAll()
    {
        final Document document = new Document();
        final Node parent = new Node();
        document.addChild(parent);
        final Elements<Node> elements = new Nodes(parent);

        final Node child = new Node();
        child.setId("ID");
        child.setSid("SID");

        elements.add(child);
        final List<Object> toRetain = new ArrayList<Object>();
        toRetain.add(child);
        toRetain.add(new Node());
        toRetain.add("test");
        assertFalse(elements.retainAll(toRetain));
        toRetain.remove(child);
        assertTrue(elements.retainAll(toRetain));

        // Check if node was correctly detached from elements
        assertEquals(0, elements.size());
        assertNull(child.getParent());
        assertNull(child.getDocument());
        assertNull(document.getById("ID"));
        assertNull(document.getBySid("SID"));
        assertNull(parent.getBySid("SID"));
    }
}
TOP

Related Classes of de.ailis.jollada.model.ElementsTest

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.