blob: 6838ad126dd3509ba0358806d6f92ff66f8e67ec [file] [log] [blame]
/*
* Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.user.client.ui;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.junit.DoNotRunWith;
import com.google.gwt.junit.Platform;
import com.google.gwt.user.datepicker.client.DateBox;
import java.util.Date;
/**
* Tests {@link DateBox}.
*/
public class DateBoxTest extends WidgetTestBase {
@Override
public String getModuleName() {
return "com.google.gwt.user.User";
}
@DoNotRunWith(Platform.HtmlUnitBug)
public void testAccessors() {
DateBox db = new DateBox();
assertFalse(db.isDatePickerShowing());
db.showDatePicker();
assertTrue(db.isDatePickerShowing());
db.hideDatePicker();
assertFalse(db.isDatePickerShowing());
}
@DoNotRunWith({Platform.HtmlUnitBug})
public void testValueChangeEvent() {
// Checks setValue(date, true);
DateBox db = new DateBox();
RootPanel.get().add(db);
new DateValueChangeTester(db).run();
// Check setting the text directly in the text box.
final DateBox db2 = new DateBox();
RootPanel.get().add(db2);
new DateValueChangeTester(db2) {
@Override
protected void fire(java.util.Date d) {
db2.getTextBox().setText(db2.getFormat().format(db2, d));
NativeEvent e = Document.get().createBlurEvent();
db2.getTextBox().getElement().dispatchEvent(e);
}
}.run();
// Checks that setting the date picker's date works correctly.
final DateBox db3 = new DateBox();
RootPanel.get().add(db3);
new DateValueChangeTester(db3) {
@Override
protected void fire(java.util.Date d) {
db3.getDatePicker().setValue(d, true);
}
}.run();
}
@DoNotRunWith({Platform.HtmlUnitBug})
public void testFireNullValues() {
DateBox db = new DateBox();
db.setFireNullValues(true);
assertTrue(db.getFireNullValues());
RootPanel.get().add(db);
@SuppressWarnings("unchecked")
final ValueChangeEvent<Date>[] eventHolder = new ValueChangeEvent[1];
final boolean[] wasCalled = new boolean[1];
db.addValueChangeHandler(new ValueChangeHandler<Date>() {
@Override
public void onValueChange(ValueChangeEvent<Date> event) {
wasCalled[0] = true;
eventHolder[0] = event;
}
});
// test that an empty string fires an event
db.setValue(new Date(1976,1,20));
db.getTextBox().setText("");
NativeEvent e = Document.get().createBlurEvent();
db.getTextBox().getElement().dispatchEvent(e);
assertTrue(wasCalled[0]);
assertNull(eventHolder[0].getValue());
// test that an invalid date string fires an event, and leaves the text in
// the textbox
db.setValue(new Date(1976,1,20));
db.getTextBox().setText("abcd");
e = Document.get().createBlurEvent();
db.getTextBox().getElement().dispatchEvent(e);
assertTrue(wasCalled[0]);
assertNull(eventHolder[0].getValue());
assertEquals("abcd", db.getTextBox().getText());
}
}