/******************************************************************************* * Copyright (c) 2008, 2015 Innoopract Informationssysteme GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Innoopract Informationssysteme GmbH - initial API and implementation * EclipseSource - ongoing development ******************************************************************************/ package org.eclipse.swt.internal.widgets.datetimekit; import static org.eclipse.rap.rwt.internal.lifecycle.WidgetUtil.getId; import static org.eclipse.rap.rwt.internal.protocol.RemoteObjectFactory.getRemoteObject; import static org.eclipse.rap.rwt.testfixture.internal.TestMessage.getParent; import static org.eclipse.rap.rwt.testfixture.internal.TestMessage.getStyles; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import java.io.IOException; import java.util.Date; import java.util.List; import org.eclipse.rap.json.JsonArray; import org.eclipse.rap.json.JsonObject; import org.eclipse.rap.json.JsonValue; import org.eclipse.rap.rwt.internal.protocol.ClientMessageConst; import org.eclipse.rap.rwt.internal.protocol.Operation.CreateOperation; import org.eclipse.rap.rwt.internal.remote.RemoteObjectRegistry; import org.eclipse.rap.rwt.remote.OperationHandler; import org.eclipse.rap.rwt.testfixture.internal.Fixture; import org.eclipse.rap.rwt.testfixture.internal.TestMessage; import org.eclipse.swt.SWT; import org.eclipse.swt.internal.widgets.controlkit.ControlLCATestUtil; import org.eclipse.swt.widgets.DateTime; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.junit.After; import org.junit.Before; import org.junit.Test; public class DateTimeLCA_Test { private Display display; private Shell shell; private DateTimeLCA lca; @Before public void setUp() { Fixture.setUp(); display = new Display(); shell = new Shell( display, SWT.NONE ); lca = DateTimeLCA.INSTANCE; } @After public void tearDown() { Fixture.tearDown(); } @Test public void testCommonControlProperties() throws IOException { ControlLCATestUtil.testCommonControlProperties( new DateTime( shell, SWT.DATE ) ); ControlLCATestUtil.testCommonControlProperties( new DateTime( shell, SWT.TIME ) ); ControlLCATestUtil.testCommonControlProperties( new DateTime( shell, SWT.CALENDAR ) ); } // 315950: [DateTime] method getDay() return wrong day in particular circumstances @Test public void testDateTimeDate_Bug315950() { DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM | SWT.DROP_DOWN ); getRemoteObject( dateTime ).setHandler( new DateTimeOperationHandler( dateTime ) ); dateTime.setDay( 15 ); dateTime.setMonth( 5 ); dateTime.setYear( 2010 ); Fixture.markInitialized( display ); Fixture.fakeNotifyOperation( getId( dateTime ), ClientMessageConst.EVENT_SELECTION, null ); JsonObject properties = new JsonObject().add( "year", 2010 ).add( "month", 4 ).add( "day", 31 ); Fixture.fakeSetOperation( getId( dateTime ), properties ); Fixture.readDataAndProcessAction( dateTime ); assertEquals( 31, dateTime.getDay() ); assertEquals( 4, dateTime.getMonth() ); assertEquals( 2010, dateTime.getYear() ); } @Test public void testRenderCreateDate() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.SHORT | SWT.DROP_DOWN ); lca.renderInitialization( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertEquals( "rwt.widgets.DateTime", operation.getType() ); List<String> styles = getStyles( operation ); assertTrue( styles.contains( "DATE" ) ); assertTrue( styles.contains( "SHORT" ) ); assertTrue( styles.contains( "DROP_DOWN" ) ); } @Test public void testRenderCreateDate_InitalParameters() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); lca.renderInitialization( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); java.util.List<String> propertyNames = operation.getProperties().names(); assertTrue( propertyNames.contains( "cellSize" ) ); assertTrue( propertyNames.contains( "monthNames" ) ); assertTrue( propertyNames.contains( "weekdayNames" ) ); assertTrue( propertyNames.contains( "weekdayShortNames" ) ); assertTrue( propertyNames.contains( "dateSeparator" ) ); assertTrue( propertyNames.contains( "datePattern" ) ); } @Test public void testRenderInitialization_Date_setsOperationHandler() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); String id = getId( dateTime ); lca.renderInitialization( dateTime ); OperationHandler handler = RemoteObjectRegistry.getInstance().get( id ).getHandler(); assertTrue( handler instanceof DateTimeOperationHandler ); } @Test public void testReadData_Date_usesOperationHandler() { DateTime dateTime = new DateTime( shell, SWT.DATE ); DateTimeOperationHandler handler = spy( new DateTimeOperationHandler( dateTime ) ); getRemoteObject( getId( dateTime ) ).setHandler( handler ); Fixture.fakeNotifyOperation( getId( dateTime ), "Help", new JsonObject() ); lca.readData( dateTime ); verify( handler ).handleNotifyHelp( dateTime, new JsonObject() ); } @Test public void testRenderCreateTime() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME | SWT.MEDIUM ); lca.renderInitialization( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertEquals( "rwt.widgets.DateTime", operation.getType() ); List<String> styles = getStyles( operation ); assertTrue( styles.contains( "TIME" ) ); assertTrue( styles.contains( "MEDIUM" ) ); } @Test public void testReadData_Time_usesOperationHandler() { DateTime dateTime = new DateTime( shell, SWT.TIME ); DateTimeOperationHandler handler = spy( new DateTimeOperationHandler( dateTime ) ); getRemoteObject( getId( dateTime ) ).setHandler( handler ); Fixture.fakeNotifyOperation( getId( dateTime ), "Help", new JsonObject() ); lca.readData( dateTime ); verify( handler ).handleNotifyHelp( dateTime, new JsonObject() ); } @Test public void testRenderCreateCalendar() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR | SWT.LONG ); lca.renderInitialization( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertEquals( "rwt.widgets.DateTime", operation.getType() ); List<String> styles = getStyles( operation ); assertTrue( styles.contains( "CALENDAR" ) ); assertTrue( styles.contains( "LONG" ) ); } @Test public void testReadData_Calendar_usesOperationHandler() { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); DateTimeOperationHandler handler = spy( new DateTimeOperationHandler( dateTime ) ); getRemoteObject( getId( dateTime ) ).setHandler( handler ); Fixture.fakeNotifyOperation( getId( dateTime ), "Help", new JsonObject() ); lca.readData( dateTime ); verify( handler ).handleNotifyHelp( dateTime, new JsonObject() ); } @Test public void testRenderCreateCalendar_InitalParameters() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); lca.renderInitialization( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); java.util.List<String> propertyNames = operation.getProperties().names(); assertTrue( propertyNames.contains( "cellSize" ) ); assertTrue( propertyNames.contains( "monthNames" ) ); assertTrue( propertyNames.contains( "weekdayShortNames" ) ); } @Test public void testRenderParent() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM ); lca.renderInitialization( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertEquals( getId( dateTime.getParent() ), getParent( operation ) ); } @Test public void testRenderAddSelectionListener() throws Exception { DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); Fixture.preserveWidgets(); dateTime.addListener( SWT.Selection, mock( Listener.class ) ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( JsonValue.TRUE, message.findListenProperty( dateTime, "Selection" ) ); } @Test public void testRenderRemoveSelectionListener() throws Exception { DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM ); Listener listener = mock( Listener.class ); dateTime.addListener( SWT.Selection, listener ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); Fixture.preserveWidgets(); dateTime.removeListener( SWT.Selection, listener ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( JsonValue.FALSE, message.findListenProperty( dateTime, "Selection" ) ); } @Test public void testRenderSelectionListenerUnchanged() throws Exception { DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); Fixture.preserveWidgets(); dateTime.addListener( SWT.Selection, mock( Listener.class ) ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findListenOperation( dateTime, "Selection" ) ); } @Test public void testRenderAddDefaultSelectionListener() throws Exception { DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); Fixture.preserveWidgets(); dateTime.addListener( SWT.DefaultSelection, mock( Listener.class ) ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( JsonValue.TRUE, message.findListenProperty( dateTime, "DefaultSelection" ) ); } @Test public void testRenderRemoveDefaultSelectionListener() throws Exception { DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM ); Listener listener = mock( Listener.class ); dateTime.addListener( SWT.DefaultSelection, listener ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); Fixture.preserveWidgets(); dateTime.removeListener( SWT.DefaultSelection, listener ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( JsonValue.FALSE, message.findListenProperty( dateTime, "DefaultSelection" ) ); } @Test public void testRenderDefaultSelectionListenerUnchanged() throws Exception { DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); Fixture.preserveWidgets(); dateTime.addListener( SWT.DefaultSelection, mock( Listener.class ) ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findListenOperation( dateTime, "DefaultSelection" ) ); } @Test public void testRenderInitialYear() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "year" ) ); } @Test public void testRenderYear() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); dateTime.setYear( 2000 ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( 2000, message.findSetProperty( dateTime, "year" ).asInt() ); } @Test public void testRenderYearUnchanged() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setYear( 2000 ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "year" ) ); } @Test public void testRenderInitialMonth() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "month" ) ); } @Test public void testRenderMonth() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); // Note: we have to use a month with 31 days, otherwise it is rejected on a 31th dateTime.setMonth( 2 ); // 2 == March! lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( 2, message.findSetProperty( dateTime, "month" ).asInt() ); } @Test public void testRenderMonthUnchanged() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); // Note: we have to use a month with 31 days, otherwise it is rejected on a 31th dateTime.setMonth( 2 ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "month" ) ); } @Test public void testRenderInitialDay() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "day" ) ); } @Test public void testRenderDay() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); dateTime.setDay( 3 ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( 3, message.findSetProperty( dateTime, "day" ).asInt() ); } @Test public void testRenderDayUnchanged() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setDay( 3 ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "day" ) ); } @Test public void testRenderInitialMinimum() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertFalse( operation.getProperties().names().contains( "minimum" ) ); } @Test public void testRenderMinimum() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); Date date = new Date(); dateTime.setMinimum( date ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( date.getTime(), message.findSetProperty( dateTime, "minimum" ).asLong() ); } @Test public void testRenderMinimumUnchanged() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setMinimum( new Date() ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "minimum" ) ); } @Test public void testRenderMinimumReset() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setMinimum( new Date() ); Fixture.preserveWidgets(); dateTime.setMinimum( null ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( JsonValue.NULL, message.findSetProperty( dateTime, "minimum" ) ); } @Test public void testRenderInitialMaximum() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertFalse( operation.getProperties().names().contains( "maximum" ) ); } @Test public void testRenderMaximum() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); Date date = new Date(); dateTime.setMaximum( date ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( date.getTime(), message.findSetProperty( dateTime, "maximum" ).asLong() ); } @Test public void testRenderMaximumUnchanged() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setMaximum( new Date() ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "maximum" ) ); } @Test public void testRenderMaximumReset() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setMaximum( new Date() ); Fixture.preserveWidgets(); dateTime.setMaximum( null ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( JsonValue.NULL, message.findSetProperty( dateTime, "maximum" ) ); } @Test public void testRenderInitialSubWidgetsBounds_Date() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "subWidgetsBounds" ) ); } @Test public void testRenderSubWidgetsBounds_Date() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); JsonArray actual = ( JsonArray )message.findSetProperty( dateTime, "subWidgetsBounds" ); assertEquals( 9, actual.size() ); } @Test public void testRenderSubWidgetsBoundsUnchanged_Date() throws IOException { DateTime dateTime = new DateTime( shell, SWT.DATE ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "subWidgetsBounds" ) ); } @Test public void testRenderInitialHours() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "hours" ) ); } @Test public void testRenderHours() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); dateTime.setHours( 10 ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( 10, message.findSetProperty( dateTime, "hours" ).asInt() ); } @Test public void testRenderHoursUnchanged() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setHours( 10 ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "hours" ) ); } @Test public void testRenderInitialMinutes() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "minutes" ) ); } @Test public void testRenderMinutes() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); dateTime.setMinutes( 10 ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( 10, message.findSetProperty( dateTime, "minutes" ).asInt() ); } @Test public void testRenderMinutesUnchanged() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setMinutes( 10 ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "minutes" ) ); } @Test public void testRenderInitialSeconds() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "seconds" ) ); } @Test public void testRenderSeconds() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); dateTime.setSeconds( 10 ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( 10, message.findSetProperty( dateTime, "seconds" ).asInt() ); } @Test public void testRenderSecondsUnchanged() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setSeconds( 10 ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "seconds" ) ); } @Test public void testRenderInitialSubWidgetsBounds_Time() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "subWidgetsBounds" ) ); } @Test public void testRenderSubWidgetsBounds_Time() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); JsonArray actual = ( JsonArray )message.findSetProperty( dateTime, "subWidgetsBounds" ); assertEquals( 6, actual.size() ); } @Test public void testRenderSubWidgetsBoundsUnchanged_Time() throws IOException { DateTime dateTime = new DateTime( shell, SWT.TIME ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "subWidgetsBounds" ) ); } @Test public void testRenderInitialYear_Calendar() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "year" ) ); } @Test public void testRenderYear_Calendar() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); dateTime.setYear( 2000 ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( 2000, message.findSetProperty( dateTime, "year" ).asInt() ); } @Test public void testRenderYearUnchanged_Calendar() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setYear( 2000 ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "year" ) ); } @Test public void testRenderInitialMonth_Calendar() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "month" ) ); } @Test public void testRenderMonth_Calendar() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); // Note: we have to use a month with 31 days, otherwise it is rejected on a 31th dateTime.setMonth( 2 ); // 2 == March! lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( 2, message.findSetProperty( dateTime, "month" ).asInt() ); } @Test public void testRenderMonthUnchanged_Calendar() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); // Note: we have to use a month with 31 days, otherwise it is rejected on a 31th dateTime.setMonth( 2 ); // 2 == March! Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "month" ) ); } @Test public void testRenderInitialDay_Calendar() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); lca.render( dateTime ); TestMessage message = Fixture.getProtocolMessage(); CreateOperation operation = message.findCreateOperation( dateTime ); assertTrue( operation.getProperties().names().contains( "day" ) ); } @Test public void testRenderDay_Calendar() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); dateTime.setDay( 3 ); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertEquals( 3, message.findSetProperty( dateTime, "day" ).asInt() ); } @Test public void testRenderDayUnchanged_Calendar() throws IOException { DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); Fixture.markInitialized( display ); Fixture.markInitialized( dateTime ); dateTime.setDay( 3 ); Fixture.preserveWidgets(); lca.renderChanges( dateTime ); TestMessage message = Fixture.getProtocolMessage(); assertNull( message.findSetOperation( dateTime, "day" ) ); } }