blob: 1dcd3e1ac5eab42b712f25978c76876406825a0d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2011 Innoopract Informationssysteme GmbH.
* 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.widgets;
import static org.mockito.Mockito.mock;
import java.util.Locale;
import junit.framework.TestCase;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.lifecycle.PhaseId;
import org.eclipse.rap.rwt.testfixture.Fixture;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
public class DateTime_Test extends TestCase {
private Shell shell;
protected void setUp() throws Exception {
Fixture.setUp();
Fixture.fakePhase( PhaseId.PROCESS_ACTION );
Display display = new Display();
shell = new Shell( display, SWT.NONE );
}
protected void tearDown() throws Exception {
Fixture.tearDown();
}
public void testInvalidValues() {
DateTime dateTime = new DateTime( shell, SWT.NONE );
dateTime.setDay( 1 );
dateTime.setMonth( 0 );
dateTime.setYear( 2008 );
dateTime.setHours( 0 );
dateTime.setMinutes( 0 );
dateTime.setSeconds( 0 );
assertEquals( 1, dateTime.getDay() );
assertEquals( 0, dateTime.getMonth() );
assertEquals( 2008, dateTime.getYear() );
assertEquals( 0, dateTime.getHours() );
assertEquals( 0, dateTime.getMinutes() );
assertEquals( 0, dateTime.getSeconds() );
// Test day
dateTime.setDay( 61 );
assertEquals( 1, dateTime.getDay() );
dateTime.setDay( 0 );
assertEquals( 1, dateTime.getDay() );
dateTime.setDay( -5 );
assertEquals( 1, dateTime.getDay() );
dateTime.setMonth( 1 );
dateTime.setDay( 29 );
assertEquals( 29, dateTime.getDay() );
dateTime.setDay( 30 );
assertEquals( 29, dateTime.getDay() );
// Test month
dateTime.setMonth( 12 );
assertEquals( 1, dateTime.getMonth() );
dateTime.setMonth( -5 );
assertEquals( 1, dateTime.getMonth() );
dateTime.setMonth( 0 );
dateTime.setDay( 31 );
dateTime.setMonth( 1 );
assertEquals( 0, dateTime.getMonth() );
// Test year
dateTime.setYear( 12345 );
assertEquals( 2008, dateTime.getYear() );
dateTime.setYear( 123 );
assertEquals( 2008, dateTime.getYear() );
dateTime.setDay( 29 );
dateTime.setMonth( 1 );
dateTime.setYear( 2007 );
assertEquals( 2008, dateTime.getYear() );
// Test hours
dateTime.setHours( 24 );
assertEquals( 0, dateTime.getHours() );
dateTime.setHours( -3 );
assertEquals( 0, dateTime.getHours() );
// Test minutes
dateTime.setMinutes( 65 );
assertEquals( 0, dateTime.getMinutes() );
dateTime.setMinutes( -7 );
assertEquals( 0, dateTime.getMinutes() );
// Test seconds
dateTime.setSeconds( 89 );
assertEquals( 0, dateTime.getSeconds() );
dateTime.setSeconds( -1 );
assertEquals( 0, dateTime.getSeconds() );
// Test date
dateTime.setDate( 2009, 5, 6 );
dateTime.setDate( 2008, 1, 30 );
assertEquals( 6, dateTime.getDay() );
assertEquals( 5, dateTime.getMonth() );
assertEquals( 2009, dateTime.getYear() );
// Test time
dateTime.setTime( 12, 14, 16 );
dateTime.setTime( 23, 76, 15 );
assertEquals( 12, dateTime.getHours() );
assertEquals( 14, dateTime.getMinutes() );
assertEquals( 16, dateTime.getSeconds() );
}
public void testSetDate() {
DateTime dateTime = new DateTime( shell, SWT.NONE );
dateTime.setDate( 1985, 10, 29 );
assertEquals( 29, dateTime.getDay() );
assertEquals( 10, dateTime.getMonth() );
assertEquals( 1985, dateTime.getYear() );
dateTime.setDate( 2008, 1, 29 );
assertEquals( 29, dateTime.getDay() );
assertEquals( 1, dateTime.getMonth() );
assertEquals( 2008, dateTime.getYear() );
}
public void testSetTime() {
DateTime dateTime = new DateTime( shell, SWT.NONE );
dateTime.setTime(2, 10, 30);
assertEquals( 2, dateTime.getHours() );
assertEquals( 10, dateTime.getMinutes() );
assertEquals( 30, dateTime.getSeconds() );
}
public void testStyle() {
// Test SWT.NONE
DateTime dateTime = new DateTime( shell, SWT.NONE );
assertTrue( ( dateTime.getStyle() & SWT.DATE ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.MEDIUM ) != 0 );
// Test SWT.BORDER
dateTime = new DateTime( shell, SWT.BORDER );
assertTrue( ( dateTime.getStyle() & SWT.DATE ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.MEDIUM ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.BORDER ) != 0 );
// Test combination of SWT.DATE | SWT.TIME | SWT.CALENDAR
dateTime = new DateTime( shell, SWT.DATE | SWT.TIME | SWT.CALENDAR );
assertTrue( ( dateTime.getStyle() & SWT.DATE ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.TIME ) == 0 );
assertTrue( ( dateTime.getStyle() & SWT.CALENDAR ) == 0 );
dateTime = new DateTime( shell, SWT.DATE | SWT.TIME );
assertTrue( ( dateTime.getStyle() & SWT.DATE ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.TIME ) == 0 );
dateTime = new DateTime( shell, SWT.DATE | SWT.CALENDAR );
assertTrue( ( dateTime.getStyle() & SWT.DATE ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.CALENDAR ) == 0 );
dateTime = new DateTime( shell, SWT.TIME | SWT.CALENDAR );
assertTrue( ( dateTime.getStyle() & SWT.TIME ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.CALENDAR ) == 0 );
dateTime = new DateTime( shell, SWT.CALENDAR );
assertTrue( ( dateTime.getStyle() & SWT.CALENDAR ) != 0 );
// Test combination of SWT.MEDIUM | SWT.SHORT | SWT.LONG
dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM | SWT.SHORT | SWT.LONG );
assertTrue( ( dateTime.getStyle() & SWT.DATE ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.MEDIUM ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.SHORT ) == 0 );
assertTrue( ( dateTime.getStyle() & SWT.LONG ) == 0 );
dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM | SWT.SHORT );
assertTrue( ( dateTime.getStyle() & SWT.DATE ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.MEDIUM ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.SHORT ) == 0 );
dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM | SWT.LONG );
assertTrue( ( dateTime.getStyle() & SWT.DATE ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.MEDIUM ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.LONG ) == 0 );
dateTime = new DateTime( shell, SWT.TIME | SWT.SHORT | SWT.LONG );
assertTrue( ( dateTime.getStyle() & SWT.TIME ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.SHORT ) != 0 );
assertTrue( ( dateTime.getStyle() & SWT.LONG ) == 0 );
// Test SWT.DROP_DOWN
dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM | SWT.DROP_DOWN );
assertTrue( ( dateTime.getStyle() & SWT.DROP_DOWN ) != 0 );
dateTime = new DateTime( shell, SWT.TIME | SWT.MEDIUM | SWT.DROP_DOWN );
assertTrue( ( dateTime.getStyle() & SWT.DROP_DOWN ) == 0 );
dateTime = new DateTime( shell, SWT.CALENDAR | SWT.MEDIUM | SWT.DROP_DOWN );
assertTrue( ( dateTime.getStyle() & SWT.DROP_DOWN ) == 0 );
}
public void testDispose() {
DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM );
dateTime.dispose();
assertTrue( dateTime.isDisposed() );
}
public void testComputeSize() {
// The component computeSize depends on day/months names
// which are locale dependent
RWT.setLocale( Locale.US );
DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.SHORT );
Point expected = new Point( 145, 28 );
assertEquals( expected, dateTime.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
dateTime = new DateTime( shell, SWT.DATE | SWT.SHORT | SWT.BORDER );
expected = new Point( 147, 30 );
assertEquals( expected, dateTime.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM );
expected = new Point( 122, 28 );
assertEquals( expected, dateTime.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
dateTime = new DateTime( shell, SWT.DATE | SWT.LONG );
expected = new Point( 239, 28 );
assertEquals( expected, dateTime.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
dateTime = new DateTime( shell, SWT.TIME | SWT.SHORT );
expected = new Point( 82, 28 );
assertEquals( expected, dateTime.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
dateTime = new DateTime( shell, SWT.TIME | SWT.MEDIUM );
expected = new Point( 108, 28 );
assertEquals( expected, dateTime.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
dateTime = new DateTime( shell, SWT.TIME | SWT.LONG );
expected = new Point( 108, 28 );
assertEquals( expected, dateTime.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
dateTime = new DateTime( shell, SWT.CALENDAR );
expected = new Point( 192, 150 );
assertEquals( expected, dateTime.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
expected = new Point( 100, 100 );
assertEquals( expected, dateTime.computeSize( 100, 100 ) );
}
public void testDateIsSerializable() throws Exception {
DateTime dateTime = new DateTime( shell, SWT.DATE );
dateTime.setDate( 2000, 1, 1 );
DateTime deserializedDateTime = Fixture.serializeAndDeserialize( dateTime );
assertEquals( 1, deserializedDateTime.getDay() );
assertEquals( 1, deserializedDateTime.getMonth() );
assertEquals( 2000, deserializedDateTime.getYear() );
}
public void testTimeIsSerializable() throws Exception {
DateTime dateTime = new DateTime( shell, SWT.TIME );
dateTime.setTime( 12, 12, 12 );
DateTime deserializedDateTime = Fixture.serializeAndDeserialize( dateTime );
assertEquals( 12, deserializedDateTime.getHours() );
assertEquals( 12, deserializedDateTime.getMinutes() );
assertEquals( 12, deserializedDateTime.getSeconds() );
}
public void testAddSelectionListener() {
DateTime dateTime = new DateTime( shell, SWT.NONE );
dateTime.addSelectionListener( mock( SelectionListener.class ) );
assertTrue( dateTime.isListening( SWT.Selection ) );
assertTrue( dateTime.isListening( SWT.DefaultSelection ) );
}
public void testRemoveSelectionListener() {
DateTime dateTime = new DateTime( shell, SWT.NONE );
SelectionListener listener = mock( SelectionListener.class );
dateTime.addSelectionListener( listener );
dateTime.removeSelectionListener( listener );
assertFalse( dateTime.isListening( SWT.Selection ) );
assertFalse( dateTime.isListening( SWT.DefaultSelection ) );
}
public void testAddSelectionListenerWithNullArgument() {
DateTime dateTime = new DateTime( shell, SWT.NONE );
try {
dateTime.addSelectionListener( null );
} catch( IllegalArgumentException expected ) {
}
}
public void testRemoveSelectionListenerWithNullArgument() {
DateTime dateTime = new DateTime( shell, SWT.NONE );
try {
dateTime.removeSelectionListener( null );
} catch( IllegalArgumentException expected ) {
}
}
}