package com.googlecode.gwt.test;
import com.google.gwt.event.dom.client.*;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.FocusPanel;
import com.google.gwt.user.client.ui.Label;
import com.googlecode.gwt.test.utils.events.Browser;
import com.googlecode.gwt.test.utils.events.EventBuilder;
import org.junit.Before;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class FocusPanelTest extends GwtTestTest {
private Label child;
private FocusPanel panel;
private boolean test;
@Before
public void beforeFocusPanelTest() {
child = new Label("focus panel's child widget");
panel = new FocusPanel(child);
test = false;
}
@Test
public void click_EmptyPanel() {
// Given
panel = new FocusPanel();
panel.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
test = true;
}
});
// When
Browser.click(panel);
// Then
assertThat(test).isTrue();
}
@Test
public void click_WithChild() {
// Given
panel.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
test = true;
}
});
child.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
child.setText("clicked");
}
});
// When
Browser.click(panel);
// Then
assertThat(test).isTrue();
// click event should not be dispatched to the child widget
assertThat(child.getText()).isEqualTo("focus panel's child widget");
}
@Test
public void touchCancel() {
// Given
panel.addTouchCancelHandler(new TouchCancelHandler() {
public void onTouchCancel(TouchCancelEvent event) {
test = true;
}
});
// When
Browser.dispatchEvent(panel, EventBuilder.create(Event.ONTOUCHCANCEL).build());
// Then
assertThat(test).isTrue();
}
@Test
public void touchEnd() {
// Given
panel.addTouchEndHandler(new TouchEndHandler() {
public void onTouchEnd(TouchEndEvent event) {
test = true;
}
});
// When
Browser.dispatchEvent(panel, EventBuilder.create(Event.ONTOUCHEND).build());
// Then
assertThat(test).isTrue();
}
@Test
public void touchMove() {
// Given
panel.addTouchMoveHandler(new TouchMoveHandler() {
public void onTouchMove(TouchMoveEvent event) {
test = true;
}
});
// When
Browser.dispatchEvent(panel, EventBuilder.create(Event.ONTOUCHMOVE).build());
// Then
assertThat(test).isTrue();
}
@Test
public void touchStart() {
// Given
panel.addTouchStartHandler(new TouchStartHandler() {
public void onTouchStart(TouchStartEvent event) {
test = true;
}
});
// When
Browser.dispatchEvent(panel, EventBuilder.create(Event.ONTOUCHSTART).build());
// Then
assertThat(test).isTrue();
}
}