package com.guit.client.dom; import com.guit.client.dom.impl.DivImpl; import com.guit.client.dom.impl.ElementImpl; import com.guit.client.dom.impl.FormImpl; import com.guit.client.dom.impl.GuitDomImpl; import static junit.framework.Assert.*; import org.junit.Test; import java.util.List; public class ElementGwtTest { GuitDom f = new GuitDomImpl(); @Test public void testBody() { Body body = f.getDocumentBody(); String name = "name"; String gal = "gal"; body.attr(name, gal); assertEquals(gal, f.getDocumentBody().attr(name)); } @Test public void complexSelector() { Div e = f.div(); e.html("<input name='name' />"); Element el = f.element("span"); el.attr("name", "name"); Span span = f.span().from(el); assertEquals("name", span.attr("name")); List<Element> r = e.query("input[name='name']"); assertEquals(1, r.size()); assertEquals("input", r.get(0).tag()); } @Test(expected = RuntimeException.class) public void childrenException() { Element e = new ElementImpl("input"); e.html("<sp"); e.children(); } @Test public void test() { Element e = new ElementImpl("input"); assertTrue(e.hasTagName("input")); assertFalse(e.hasTagName("label")); assertEquals("input", e.tag()); // Empty children assertEquals(0, e.children().size()); // Attribute String attrName = "name"; String attrValue = "firstName"; e.attr(attrName, attrValue); assertEquals(attrValue, e.attr(attrName)); assertTrue(e.hasAttribute(attrName)); e.removeAttr(attrName); assertFalse(e.hasAttribute(attrName)); // Style String styleProp = "backgroundColor"; String styleValue = "red"; e.css(styleProp, styleValue); assertEquals(styleValue, e.css(styleProp)); styleProp = "color"; styleValue = "red"; e.css(styleProp, styleValue); assertEquals(styleValue, e.css(styleProp)); styleValue = "black"; e.css(styleProp, styleValue); assertEquals(styleValue, e.css(styleProp)); assertTrue(e.css("border").isEmpty()); e.attr("style", ";color:red;;"); assertEquals("red", e.css("color")); // Inner html String childrenAttrValue = "nameLabel"; String labelText = "First name:"; String inputText = "<span>Insert your first <span>name</span></span>"; String html = "<label " + attrName + "=\"" + childrenAttrValue + "\">" + labelText + "</label>" + "<input " + attrName + "=\"" + attrValue + "\">" + inputText + "</input>"; e.html(html); assertEquals(html, e.html()); // Elements by tagName List<Element> elementsByTagName = e.elementsByTagName("span"); assertEquals(2, elementsByTagName.size()); // First e.first(); // Last e.last(); // List children List<Element> children = e.children(); assertEquals(2, children.size()); Element labelChild = children.get(0); assertEquals(e, labelChild.parent()); assertEquals("label", labelChild.tag()); assertEquals(labelText, labelChild.html()); assertEquals(childrenAttrValue, labelChild.attr(attrName)); Element inputChild = children.get(1); assertEquals(inputText, inputChild.html()); assertEquals("input", inputChild.tag()); assertEquals(attrValue, inputChild.attr(attrName)); // CSS selector List<Element> selected = e.query("label"); assertEquals(1, selected.size()); } @Test(expected = RuntimeException.class) public void queryException() { Element e = new ElementImpl("div"); e.html("<span"); List<Element> emptyQuery = e.query("label"); assertEquals(0, emptyQuery.size()); } @Test public void emptyQuery() { Element e = new ElementImpl("div"); List<Element> emptyQuery = e.query("label"); assertEquals(0, emptyQuery.size()); } private boolean value = false; @Test public void callers() { Element e = new ElementImpl("div"); e.blur(new EventHandler() { @Override public void onEvent(Event event) { value = true; } }); assertFalse(value); e.blur(); assertTrue(value); e.focus(); e.scrollIntoView(); } @Test public void testTable() { Form e = new FormImpl(); Div div = new DivImpl(); e.add(div); e.html("<span><div><input id='12'></input></div></span>" + e.html()); System.out.println(e.html()); } @Test public void className() { Element e = new ElementImpl("div"); String name1 = "class1"; String name2 = "class2"; String name3 = "class3"; e.addClassName(name1); e.addClassName(name1); assertTrue(e.hasClassName(name1)); e.removeClassName(name1); e.removeClassName(name1); assertFalse(e.hasClassName(name1)); e.toogleClassName(name1); assertTrue(e.hasClassName(name1)); e.toogleClassName(name1); assertFalse(e.hasClassName(name1)); e.addClassName(name1); e.addClassName(name2); assertTrue(e.hasClassName(name1)); assertTrue(e.hasClassName(name2)); assertEquals(name1 + " " + name2, e.getClassName()); e.replaceClassName(name2, name3); assertTrue(e.hasClassName(name1)); assertTrue(e.hasClassName(name3)); assertFalse(e.hasClassName(name2)); } @Test public void properties() { Element e = new ElementImpl("div"); String value = "value"; e.lang(value); assertEquals(value, e.lang()); e.title(value); assertEquals(value, e.title()); e.dir(value); assertEquals(value, e.dir()); e.id(value); assertEquals(value, e.id()); int c = 10; e.scrollLeft(c); assertEquals(c, e.scrollLeft()); e.scrollTop(c); assertEquals(c, e.scrollTop()); e.scrollWidth(c); assertEquals(c, e.scrollWidth()); e.tabIndex(c); assertEquals(c, e.tabIndex()); e.absoluteBottom(); e.absoluteLeft(); e.absoluteRight(); e.absoluteTop(); e.clientHeight(); e.clientWidth(); e.offsetHeight(); e.offsetLeft(); e.offsetTop(); e.offsetWidth(); e.scrollHeight(); String propName = "prop"; e.propertyBoolean(propName, true); assertTrue(e.propertyBoolean(propName)); double doubleValue = 1.1; e.propertyDouble(propName, doubleValue); assertEquals(doubleValue, e.propertyDouble(propName)); e.propertyObject(propName, this); assertEquals(this, e.propertyObject(propName)); } @Test public void nextSibling() { Element e = new ElementImpl("div"); e.html("<span></span><label style='color:red'></label>"); Element label = e.first().nextSibling(); assertEquals("label", label.tag()); assertEquals("red", label.color()); } @Test public void styleWithoutValue() { Element e = new ElementImpl("div"); e.attr("style", "color"); e.attr("style", "background-color:"); e.css("font", "arial"); assertEquals("", e.css("color")); assertEquals("", e.css("background-color")); } @Test public void addChild() { String name = "name"; String firstName = "firstName"; String lastName = "lastName"; String span = "span"; String div = "div"; Element e = new ElementImpl(div); Element c = new ElementImpl(span); c.attr(name, firstName); e.add(c); List<Element> children = e.children(); assertEquals(1, children.size()); Element retrivedSpan = children.get(0); assertEquals(span, retrivedSpan.tag()); assertEquals(firstName, retrivedSpan.attr(name)); Element d = new ElementImpl(div); d.attr(name, lastName); e.add(d); children = e.children(); assertEquals(2, children.size()); Element retrivedDiv = children.get(1); assertEquals(div, retrivedDiv.tag()); assertEquals(lastName, retrivedDiv.attr(name)); // Remove e.remove(d); assertEquals(1, e.children().size()); e.add(d); assertEquals(2, e.children().size()); e.remove(1); assertEquals(1, e.children().size()); } @Test public void addInsert() { String name = "name"; String firstName = "firstName"; String lastName = "lastName"; String phone = "phone"; String span = "span"; String div = "div"; Element e = new ElementImpl(div); Element c = new ElementImpl(span); c.attr(name, firstName); e.insert(c, 0); List<Element> children = e.children(); assertEquals(1, children.size()); Element retrivedSpan = children.get(0); assertEquals(span, retrivedSpan.tag()); assertEquals(firstName, retrivedSpan.attr(name)); Element d = new ElementImpl(div); d.attr(name, lastName); e.insert(d, 1); children = e.children(); assertEquals(2, children.size()); Element retrivedDiv = children.get(1); assertEquals(div, retrivedDiv.tag()); assertEquals(lastName, retrivedDiv.attr(name)); Element k = new ElementImpl(div); k.attr(name, phone); e.insert(k, 1); children = e.children(); assertEquals(3, children.size()); retrivedDiv = children.get(1); assertEquals(div, retrivedDiv.tag()); assertEquals(phone, retrivedDiv.attr(name)); retrivedDiv = children.get(2); assertEquals(div, retrivedDiv.tag()); assertEquals(lastName, retrivedDiv.attr(name)); } }