blob: e6e50e689cf0d38d5268d300c385c5ca9ffb45c6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2017 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ua.tests.help.other;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.eclipse.help.IUAElement;
import org.eclipse.help.internal.Topic;
import org.eclipse.help.internal.UAElement;
import org.junit.Test;
public class UAElementTest {
private UAElement parent1;
private UAElement parent2;
private UAElement child1;
private UAElement child2;
private UAElement child3;
private UAElement child4;
private UAElement grandchild1;
@SuppressWarnings("unlikely-arg-type")
@Test
public void testSimpleUAElement() {
UAElement element = new UAElement("name1");
assertEquals("name1", element.getElementName());
assertEquals(0, element.getChildren().length);
Object topicChildren = element.getChildren(Topic.class);
assertTrue(topicChildren instanceof Topic[]);
assertTrue(((Topic[])topicChildren).length == 0);
assertNull(element.getParentElement());
assertNull(element.getAttribute("a1"));
assertTrue(element.equals(element));
assertFalse(element.equals(null));
assertFalse(element.equals("A string"));
}
@Test
public void testAttributes() {
UAElement element = new UAElement("name1");
element.setAttribute("a1", "v1");
assertEquals("v1", element.getAttribute("a1"));
assertNull(element.getAttribute("a2"));
assertNull(element.getAttribute("A1"));
element.setAttribute("a1", "v2");
element.setAttribute("a2", "v1");
assertEquals("v2", element.getAttribute("a1"));
assertEquals("v1", element.getAttribute("a2"));
element.setAttribute("a1", null);
assertNull(element.getAttribute("a1"));
}
@Test
public void testChildInsertionDeletion() {
initializeElements();
parent1.appendChild(child1);
IUAElement[] children = parent1.getChildren();
assertEquals(1, children.length);
assertEquals("c1", ((UAElement)children[0]).getElementName());
assertEquals(parent1, ((UAElement)children[0]).getParentElement());
assertEquals("c1", ((UAElement)children[0]).getAttribute("id"));
parent1.appendChild(child2);
children = parent1.getChildren();
assertEquals(2, children.length);
assertEquals("c2", ((UAElement)children[1]).getElementName());
parent1.insertBefore(child3, child2);
children = parent1.getChildren();
assertEquals(3, children.length);
assertEquals("c3", ((UAElement)children[1]).getElementName());
parent1.removeChild(child1);
children = parent1.getChildren();
assertEquals(2, children.length);
assertEquals("c3", ((UAElement)children[0]).getElementName());
parent1.appendChildren(new IUAElement[] {child1, child4});
children = parent1.getChildren();
assertEquals(4, children.length);
assertEquals("c1", ((UAElement)children[2]).getElementName());
assertEquals("c4", ((UAElement)children[3]).getElementName());
}
@Test
public void testDuplicateChildren() {
initializeElements();
parent1.appendChild(child1);
parent1.appendChild(child2);
parent1.appendChild(child2);
parent1.appendChild(child1);
IUAElement[] children = parent1.getChildren();
assertEquals(4, children.length);
assertEquals("c1", ((UAElement)children[0]).getElementName());
assertEquals("c2", ((UAElement)children[1]).getElementName());
assertEquals("c2", ((UAElement)children[2]).getElementName());
assertEquals("c1", ((UAElement)children[3]).getElementName());
}
@Test
public void testGrandchildren() {
initializeElements();
child1.appendChild(grandchild1);
parent2.appendChild(child1);
UAElement firstChild = (UAElement) parent2.getChildren()[0];
assertEquals(1, firstChild.getChildren().length);
UAElement firstGrandchild = (UAElement) firstChild.getChildren()[0];
assertEquals("g1", firstGrandchild.getElementName());
assertEquals(firstGrandchild.getParentElement(), firstChild);
}
@Test
public void testMultipleParents() {
initializeElements();
child1.appendChild(grandchild1);
parent1.appendChild(child1);
parent2.appendChild(child1);
UAElement firstChild1 = (UAElement) parent1.getChildren()[0];
assertEquals(firstChild1.getParentElement(), parent1);
UAElement firstChild2 = (UAElement) parent2.getChildren()[0];
assertEquals(firstChild2.getParentElement(), parent2);
}
@Test
public void testMultipleGrandParents() {
initializeElements();
child1.appendChild(grandchild1);
parent1.appendChild(child1);
parent2.appendChild(child1);
UAElement firstChild1 = (UAElement) parent1.getChildren()[0];
UAElement firstGrandchild1 = (UAElement) firstChild1.getChildren()[0];
assertEquals(firstGrandchild1.getParentElement(), firstChild1);
assertEquals(firstChild1.getParentElement(), parent1);
UAElement firstChild2 = (UAElement) parent2.getChildren()[0];
UAElement firstGrandchild2 = (UAElement) firstChild2.getChildren()[0];
assertEquals(firstGrandchild2.getParentElement(), firstChild2);
assertEquals(firstChild2.getParentElement(), parent2);
}
/*
* commented out because the assumptions made are not valid
*/
private void initializeElements() {
parent1 = new UAElement("p1");
parent2 = new UAElement("p2");
child1 = new UAElement("c1");
child1.setAttribute("id", "c1");
child2 = new UAElement("c2");
child2.setAttribute("id", "c2");
child3 = new UAElement("c3");
child3.setAttribute("id", "c3");
child4 = new UAElement("c4");
grandchild1 = new UAElement("g1");
grandchild1.setAttribute("id", "g1");
}
}