/* * 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()); } }