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 FlexTableTest extends GwtTestTest { private boolean clicked = false; @Test public void click_ClickHandler_NestedWidget() { // Given clicked = false; FlexTable t = new FlexTable(); Button b = new Button("Wide Button"); b.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { clicked = !clicked; } }); // add the button t.setWidget(0, 0, b); // Preconditions assertThat(clicked).isEqualTo(false); // When Browser.click(t.getWidget(0, 0)); // Then assertThat(clicked).isEqualTo(true); } @Test public void click_ClickkListener_NestedWidget() { // Given clicked = false; FlexTable t = new FlexTable(); Button b = new Button("Wide Button"); b.addClickListener(new ClickListener() { public void onClick(Widget sender) { clicked = !clicked; } }); // add the button t.setWidget(0, 0, b); // Preconditions assertThat(clicked).isEqualTo(false); // When Browser.click(t.getWidget(0, 0)); // Then assertThat(clicked).isEqualTo(true); } @Test public void html() { // Given FlexTable t = new FlexTable(); // When t.setHTML(1, 1, "<h1>test</h1>"); // Then assertThat(t.getHTML(1, 1)).isEqualTo("<h1>test</h1>"); Element e = t.getCellFormatter().getElement(1, 1); assertThat(e.getChildCount()).isEqualTo(1); HeadingElement h1 = e.getChild(0).cast(); assertThat(h1.getTagName()).isEqualTo("H1"); assertThat(h1.getInnerText()).isEqualTo("test"); } @Test public void innerFlexTable() { FlexTable t = new FlexTable(); Label label1 = new Label("1st label"); t.setWidget(0, 0, label1); FlexTable innerTable = new FlexTable(); innerTable.setWidget(0, 4, new Label()); innerTable.setWidget(0, 6, new TextBox()); t.setWidget(0, 1, innerTable); Label label2 = new Label("2nd label"); t.setWidget(0, 2, label2); assertThat(t.getWidget(0, 0)).isEqualTo(label1); assertThat(t.getWidget(0, 2)).isEqualTo(label2); } @Test public void setText_setWidget() { // Tables have no explicit size -- they resize automatically on demand. FlexTable t = new FlexTable(); // Put some text at the table's extremes. This forces the table to be // 3 by 3. t.setText(0, 0, "upper-left corner"); t.setText(2, 2, "bottom-right corner"); // Let's put a button in the middle... Button b = new Button("Wide Button"); t.setWidget(1, 0, b); // ...and set it's column span so that it takes up the whole row. t.getFlexCellFormatter().setColSpan(1, 0, 3); // Then assertThat(t.getRowCount()).isEqualTo(3); assertThat(t.getText(2, 2)).isEqualTo("bottom-right corner"); assertThat(t.getWidget(1, 0)).isSameAs(b); } @Test public void text() { // Given FlexTable t = new FlexTable(); // When t.setText(1, 1, "text"); // Then assertThat(t.getText(1, 1)).isEqualTo("text"); } @Test public void title() { // Given FlexTable t = new FlexTable(); // When t.setTitle("title"); // Then assertThat(t.getTitle()).isEqualTo("title"); } @Test public void visible() { // Given FlexTable t = new FlexTable(); // Preconditions assertThat(t.isVisible()).isEqualTo(true); // When t.setVisible(false); // Then assertThat(t.isVisible()).isEqualTo(false); } }