Package com.googlecode.gwt.test.dom

Source Code of com.googlecode.gwt.test.dom.ElementTest

package com.googlecode.gwt.test.dom;

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

import java.util.HashMap;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

import com.google.gwt.dom.client.AnchorElement;
import com.google.gwt.dom.client.ButtonElement;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.HeadingElement;
import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.Style.Float;
import com.googlecode.gwt.test.GwtTestTest;
import com.googlecode.gwt.test.internal.utils.JsoUtils;

public class ElementTest extends GwtTestTest {

   private Element e;

   @Test
   public void attribute() {
      // Pre-Assert
      assertEquals("", e.getAttribute("input"));

      // Act
      e.setAttribute("input", "text");

      // Assert
      assertEquals("text", e.getAttribute("input"));
   }

   @Before
   public void beforeElementTest() {
      e = Document.get().createDivElement();
   }

   @Test
   public void cast_OK() {
      // Act
      DivElement casted = e.cast();

      // Assert
      assertNotNull(casted);
   }

   @Test
   public void checkHashCode() {
      // Arrange
      Map<Element, String> map = new HashMap<Element, String>();

      // Act
      map.put(e, "a string value");
      map.put(e, "this value should have overrided the first one");

      // Assert
      assertEquals("this value should have overrided the first one", map.get(e));
   }

   @Test
   public void checkToString() {
      // Arrange
      DivElement div = Document.get().createDivElement();
      div.setAttribute("someAttr", "myVal");
      div.getStyle().setBackgroundColor("black");
      div.getStyle().setFloat(Float.LEFT);
      div.getStyle().setProperty("backgroundColor", "white");
      div.setInnerHTML("<span>in span</span> out span");

      // Act
      String html = div.toString();

      // Assert
      assertEquals(
               "<div someattr=\"myVal\" style=\"float: left; background-color: white; \"><span>in span</span> out span</div>",
               html);

   }

   @Test
   public void className() {
      // Act 1
      e.setClassName("testClass");

      // Assert 1
      assertEquals("testClass", e.getClassName());
      assertEquals("testClass", e.getAttribute("class"));
      assertEquals("testClass", e.getAttribute("CLASS"));
      assertEquals("", e.getAttribute("className"));
      assertEquals("", e.getAttribute("CLASSNAME"));
      assertNull(e.getPropertyString("class"));
      assertNull(e.getPropertyString("CLASS"));
      assertEquals("testClass", e.getPropertyString("className"));
      assertNull(e.getPropertyString("CLASSNAME"));

      // Act 2
      e.addClassName("addon");

      // Assert 2
      assertEquals("testClass addon", e.getClassName());
      assertEquals("testClass addon", e.getAttribute("class"));

      // Act 3
      e.setAttribute("class", "override");

      // Assert 3
      assertEquals("override", e.getClassName());
      assertEquals("override", e.getAttribute("class"));
   }

   @Test
   public void clone_Deep() {
      // Arrange
      e.setTitle("title");
      e.setPropertyBoolean("bool", true);

      Element child = Document.get().createAnchorElement();
      child.setTitle("child");
      e.appendChild(child);

      // Act
      DivElement newNode = e.cloneNode(true).cast();

      // Assert
      assertEquals("title", newNode.getTitle());
      assertNull("Cloned element's parent should be null", newNode.getParentNode());
      assertEquals(true, newNode.getPropertyBoolean("bool"));
      assertEquals("Deep cloned element should have child nodes", 1,
               newNode.getChildNodes().getLength());
      assertTrue(child != newNode.getChildNodes().getItem(0));
      assertEquals(1, e.getChildNodes().getLength());
   }

   @Test
   public void clone_NotDeep() {
      // Arrange
      e.setTitle("title");
      e.setPropertyBoolean("bool", true);

      AnchorElement child = Document.get().createAnchorElement();
      child.setTitle("child");
      e.appendChild(child);

      // Act
      DivElement newNode = e.cloneNode(false).cast();

      // Assert
      assertEquals("title", newNode.getTitle());
      assertNull("Cloned element's parent should be null", newNode.getParentNode());
      assertEquals(true, newNode.getPropertyBoolean("bool"));
      assertEquals("Not deep cloned element should not have child nodes", 0,
               newNode.getChildNodes().getLength());
      assertEquals(1, e.getChildNodes().getLength());
   }

   @Test
   public void dir() {
      // Act
      e.setDir("dir");

      // Assert
      assertEquals("dir", e.getDir());
   }

   @Test
   public void domImplementation() {
      // Arrange
      e.setAttribute("test", "testAttr");

      // Assert getAttribute() is case insensitive
      assertEquals("testAttr", e.getAttribute("test"));
      assertEquals("testAttr", e.getAttribute("Test"));

      // Assert hasAttribute is case insensitive
      assertTrue(e.hasAttribute("teST"));

      // Assert removeAttribute is case insensitve
      e.removeAttribute("tEst");
      assertEquals("", e.getAttribute("test"));
      assertFalse(e.hasAttribute("teST"));

      // Assert "non standard" DOM properties returns 'undefined' for String,
      // Object and JSO
      assertNull(e.getPropertyString("test"));
      assertFalse(e.getPropertyBoolean("test"));
      assertEquals(0, e.getPropertyInt("test"));
      assertEquals(new Double(0.0), (Double) e.getPropertyDouble("test"));
      assertNull(e.getPropertyObject("test"));
      assertNull(e.getPropertyJSO("test"));

      // Assert "standard" DOM properties returns "" for String
      assertEquals("", e.getPropertyString("className"));
      assertNull(e.getPropertyString("classnamE"));

      e.setPropertyString("className", "testClass");
      assertEquals("testClass", e.getPropertyString("className"));
      // Special case "class" and "className"
      assertNull(e.getPropertyString("class"));
      assertEquals("testClass", e.getAttribute("class"));
      assertEquals("", e.getAttribute("CLASSNAME"));
      assertNull(e.getPropertyString("CLASSNAME"));

      // Assert on Style JSO
      assertEquals("", e.getAttribute("style")); // prints ""
      assertEquals("", e.getPropertyString("style"));
   }

   @Test
   public void getElementByTagName() {
      // Arrange
      AnchorElement ae0 = Document.get().createAnchorElement();
      AnchorElement ae1 = Document.get().createAnchorElement();
      ButtonElement be = Document.get().createPushButtonElement();
      e.appendChild(ae0);
      e.appendChild(ae1);
      e.appendChild(be);

      // Act
      NodeList<Element> anchorList = e.getElementsByTagName("a");
      NodeList<Element> buttonList = e.getElementsByTagName("button");
      NodeList<Element> allList = e.getElementsByTagName("*");

      // Assert
      assertEquals(2, anchorList.getLength());
      assertEquals(ae0, anchorList.getItem(0));
      assertEquals(ae1, anchorList.getItem(1));

      assertEquals(1, buttonList.getLength());
      assertEquals(be, buttonList.getItem(0));

      assertEquals(3, allList.getLength());
      assertEquals(ae0, allList.getItem(0));
      assertEquals(ae1, allList.getItem(1));
      assertEquals(be, allList.getItem(2));
   }

   @Test
   public void getFirstChildElement() {
      // Pre-Assert
      assertNull(e.getFirstChildElement());

      // Arrange
      Node node = Document.get().createTextNode("test");
      ButtonElement be0 = Document.get().createPushButtonElement();
      ButtonElement be1 = Document.get().createPushButtonElement();
      e.appendChild(node);
      e.appendChild(be0);
      e.appendChild(be1);

      // Act & Assert
      assertEquals(be0, e.getFirstChildElement());
   }

   @Test
   public void getNextSiblingElement() {
      // Pre-Assert
      assertNull(e.getNextSiblingElement());

      // Arrange
      ButtonElement be0 = Document.get().createPushButtonElement();
      ButtonElement be1 = Document.get().createPushButtonElement();
      e.appendChild(be0);
      e.appendChild(JsoUtils.newText("test1", Document.get()));
      e.appendChild(be1);
      e.appendChild(JsoUtils.newText("test2", Document.get()));

      // Act & Assert
      assertEquals(be1, be0.getNextSiblingElement());
      assertNull(be1.getNextSiblingElement());
   }

   @Test
   public void getOffset() {
      // Arrange
      Element parent = Document.get().createElement("a");
      parent.appendChild(e);

      // Act & Assert
      assertEquals(0, e.getOffsetHeight());
      assertEquals(0, e.getOffsetLeft());
      assertEquals(0, e.getOffsetTop());
      assertEquals(0, e.getOffsetWidth());
      assertEquals(parent, e.getOffsetParent());
   }

   @Test
   public void getParentElement() {
      // Arrange
      Element otherParent = Document.get().createDivElement();
      Element child = Document.get().createBaseElement();
      e.appendChild(child);

      // Act and assert
      assertEquals(e, child.getParentElement());

      // Act 2
      otherParent.appendChild(child);

      // Assert 2
      assertFalse(
               "Child nodes list should be empty since the only child has been attached to another parent node",
               e.hasChildNodes());
   }

   @Test
   public void hasAttribute() {
      // Arrange
      e.setAttribute("myAttr", "value");

      // Act & Assert
      assertTrue(e.hasAttribute("myAttr"));
   }

   @Test
   public void id() {
      // Act 1
      e.setId("myId");

      // Assert 1
      assertEquals("myId", e.getId());
      assertEquals("myId", e.getAttribute("id"));

      // Act 2
      e.setAttribute("id", "updatedId");

      // Assert 2
      assertEquals("updatedId", e.getId());
      assertEquals("updatedId", e.getAttribute("id"));
   }

   @Test
   public void innerHTML() {
      // Act
      e.setInnerHTML("<h1>test</h1>");

      // Assert
      assertEquals("<h1>test</h1>", e.getInnerHTML());
      assertEquals(1, e.getChildCount());
      HeadingElement h1 = e.getChild(0).cast();
      assertEquals("H1", h1.getTagName());
      assertEquals("test", h1.getInnerText());
   }

   @Test
   public void innerText() {
      // Act
      e.setInnerText("myText");

      // Assert
      assertEquals("myText", e.getInnerText());
   }

   @Test
   public void isOrHasChild() {
      // Arrange
      AnchorElement child = Document.get().createAnchorElement();
      e.appendChild(child);
      AnchorElement notAChild = Document.get().createAnchorElement();

      // Act & Assert
      assertTrue(e.isOrHasChild(e));
      assertTrue(e.isOrHasChild(child));
      assertFalse(e.isOrHasChild(notAChild));
   }

   @Test
   public void lang() {
      // Act
      e.setLang("myLang");

      // Assert
      assertEquals("myLang", e.getLang());
   }

   @Test
   public void propertyBoolean_False() {
      // Act
      e.setPropertyBoolean("prop", false);

      // Assert
      assertFalse(e.getPropertyBoolean("prop"));
   }

   @Test
   public void propertyBoolean_True() {
      // Pre-Assert
      assertFalse(e.getPropertyBoolean("prop"));
      // Act
      e.setPropertyBoolean("prop", true);

      // Assert
      assertTrue(e.getPropertyBoolean("prop"));
   }

   @Test
   public void propertyDouble() {
      // Pre-Assert
      assertEquals(new Double(0), (Double) e.getPropertyDouble("prop"));

      // Act
      e.setPropertyDouble("prop", 23);

      // Assert
      assertEquals(new Double(23), (Double) e.getPropertyDouble("prop"));
   }

   @Test
   public void propertyInt() {
      // Pre-Assert
      assertEquals(0, e.getPropertyInt("prop"));

      // Act
      e.setPropertyInt("prop", 2);

      // Assert
      assertEquals(2, e.getPropertyInt("prop"));
   }

   @Test
   public void propertyString() {
      // Pre-Assert
      assertNull(e.getPropertyString("prop"));

      // Act
      e.setPropertyString("prop", "test");

      // Assert
      assertEquals("test", e.getPropertyString("prop"));
   }

   @Test
   public void removeAttribute() {
      // Arrange
      e.setAttribute("test", "value");

      // Act
      e.removeAttribute("Test");

      // Assert
      assertEquals("Removed attribute should return emptyString", "", e.getAttribute("test"));
   }

   @Test
   public void scrollLeft() {
      // Pre-Assert
      assertEquals(0, e.getScrollLeft());

      // Act
      e.setScrollLeft(3);

      // Assert
      assertEquals(3, e.getScrollLeft());
   }

   @Test
   public void scrollTop() {
      // Pre-Assert
      assertEquals(0, e.getScrollTop());

      // Act
      e.setScrollTop(3);
      assertEquals(3, e.getScrollTop());
   }

   @Test
   public void style() {
      // Act
      e.getStyle().setProperty("test", "value");

      // Assert
      assertEquals("value", e.getStyle().getProperty("test"));
   }

   @Test
   public void tagName() {
      // Act & Assert
      assertEquals("div", e.getTagName());
      assertEquals("", e.getAttribute("tagName"));
      assertEquals("", e.getAttribute("TAGNAME"));
      assertEquals("DIV", e.getPropertyString("tagName"));
      assertNull(e.getPropertyString("TAGNAME"));
   }

   @Test
   public void title() {
      // Pre-Assert
      assertEquals("", e.getTitle());
      assertEquals("", e.getAttribute("title"));
      assertEquals("", e.getAttribute("titLe"));
      assertEquals("", e.getPropertyString("title"));
      assertNull(e.getPropertyString("titLe"));
      assertNull(e.getPropertyObject("title"));
      assertNull(e.getPropertyObject("titLe"));

      // Act
      e.setTitle("MyTitle");

      // Assert
      assertEquals("MyTitle", e.getTitle());
      assertEquals("MyTitle", e.getAttribute("title"));
      assertEquals("MyTitle", e.getAttribute("titLe"));
      assertEquals("MyTitle", e.getPropertyString("title"));
      assertNull(e.getPropertyString("titLe"));
      assertEquals("MyTitle", e.getPropertyObject("title"));
      assertNull(e.getPropertyObject("titLe"));
   }

}
TOP

Related Classes of com.googlecode.gwt.test.dom.ElementTest

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.