package com.googlecode.gwt.test;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.HeadingElement;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.*;
import com.googlecode.gwt.test.utils.events.Browser;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
@SuppressWarnings("deprecation")
public class GridTest extends GwtTestTest {
private boolean clicked = false;
@Test
public void addStyleName() {
// Given
// Grids must be sized explicitly, though they can be resized later.
Grid g = new Grid(1, 1);
// When
g.getRowFormatter().addStyleName(0, "style");
// Then
assertThat(g.getRowFormatter().getStyleName(0)).isEqualTo("style");
}
@Test
public void click_ClickHander() {
// Given
clicked = false;
final Grid g = new Grid(1, 1);
final Button b = new Button("Does nothing, but could");
g.setWidget(0, 0, b);
g.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
clicked = !clicked;
assertThat(((Grid) event.getSource()).getWidget(0, 0)).isSameAs(b);
}
});
// When
Browser.click(g, 0, 0);
// Then
assertThat(clicked).as("TableListener should have been notified").isTrue();
}
@Test
public void click_ClickHandler_NestedWidget() {
// Given
// Grids must be sized explicitly, though they can be resized later.
Grid g = new Grid(1, 1);
Button b = new Button();
b.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
clicked = !clicked;
}
});
// add the button
g.setWidget(0, 0, b);
// Preconditions
assertThat(clicked).isEqualTo(false);
// When
Browser.click(g.getWidget(0, 0));
// Then
assertThat(clicked).isEqualTo(true);
}
@Test
public void click_ClickListener_NestedWidget() {
// Given
// Grids must be sized explicitly, though they can be resized later.
Grid g = new Grid(1, 1);
Button b = new Button();
b.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
clicked = !clicked;
}
});
// add the button
g.setWidget(0, 0, b);
// Preconditions
assertThat(clicked).isEqualTo(false);
// When
Browser.click(g.getWidget(0, 0));
// Then
assertThat(clicked).isEqualTo(true);
}
@Test
public void click_TableListner() {
// Given
clicked = false;
Grid g = new Grid(1, 1);
Button b = new Button("Does nothing, but could");
g.setWidget(0, 0, b);
g.addTableListener(new TableListener() {
public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
clicked = !clicked;
}
});
// When
Browser.click(g, 0, 0);
// Then
assertThat(clicked).as("TableListener should have been notified").isTrue();
}
@Test
public void html() {
// Given
Grid g = new Grid(1, 1);
// When
g.setHTML(0, 0, "<h1>test</h1>");
// Then
assertThat(g.getHTML(0, 0)).isEqualTo("<h1>test</h1>");
Element e = g.getCellFormatter().getElement(0, 0);
assertThat(e.getChildCount()).isEqualTo(1);
HeadingElement h1 = e.getChild(0).cast();
assertThat(h1.getTagName()).isEqualTo("H1");
assertThat(h1.getInnerText()).isEqualTo("test");
}
@Test
public void removeFromGrid() {
// Given
// Grids must be sized explicitly, though they can be resized later.
Grid g = new Grid(1, 1);
Button b = new Button("Does nothing, but could");
g.setWidget(0, 0, b);
// When & Then
assertThat(g.remove(b)).as("The button has not been removed from grid").isTrue();
}
@Test
public void resizeRow() {
// Given
Grid g = new Grid(1, 1);
g.setWidget(0, 0, new Label("first"));
// Preconditions
assertThat(g.getHTML(0, 0)).isEqualTo("<div class=\"gwt-Label\">first</div>");
// When
g.resize(2, 2);
// Then
assertThat(g.getHTML(0, 0)).isEqualTo("<div class=\"gwt-Label\">first</div>");
assertThat(g.getHTML(0, 1)).isEqualTo(" ");
assertThat(g.getHTML(1, 0)).isEqualTo(" ");
assertThat(g.getHTML(1, 1)).isEqualTo(" ");
}
@Test
public void setText() {
// Given
// Grids must be sized explicitly, though they can be resized later.
Grid g = new Grid(5, 5);
// Put some values in the grid cells.
for (int row = 0; row < 5; ++row) {
for (int col = 0; col < 5; ++col)
// When
g.setText(row, col, "" + row + ", " + col);
}
// Then
assertThat(g.getText(0, 0)).isEqualTo("0, 0");
assertThat(g.getText(3, 2)).isEqualTo("3, 2");
assertThat(g.getText(4, 4)).isEqualTo("4, 4");
}
@Test
public void setWidget() {
// Given
Grid g = new Grid(3, 3);
Button b = new Button("Does nothing, but could");
// When
g.setWidget(2, 2, b);
// Then
assertThat(g.getWidget(2, 2)).isSameAs(b);
}
@Test
public void text() {
// Given
Grid g = new Grid(1, 1);
// When
g.setText(0, 0, "text");
// Then
assertThat(g.getText(0, 0)).isEqualTo("text");
}
@Test
public void title() {
// Given
Grid g = new Grid(1, 1);
// When
g.setTitle("title");
// Then
assertThat(g.getTitle()).isEqualTo("title");
}
@Test
public void visible() {
// Given
Grid g = new Grid(1, 1);
// Preconditions
assertThat(g.isVisible()).isEqualTo(true);
// When
g.setVisible(false);
// Then
assertThat(g.isVisible()).isEqualTo(false);
}
}