/******************************************************************************* * Copyright (c) 2012 EclipseSource 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: * EclipseSource - initial API and implementation ******************************************************************************/ package com.eclipsesource.tabris.widgets.enhancement; import static com.eclipsesource.tabris.internal.DataWhitelist.WhiteListEntry.AUTO_CAPITALIZE; import static com.eclipsesource.tabris.internal.DataWhitelist.WhiteListEntry.AUTO_CORRECT; import static com.eclipsesource.tabris.internal.DataWhitelist.WhiteListEntry.KEYBOARD; import static com.eclipsesource.tabris.internal.DataWhitelist.WhiteListEntry.TEXT_REPLACEMENT; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.eclipse.rap.rwt.client.WebClient; import org.eclipse.swt.widgets.Text; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import com.eclipsesource.tabris.test.util.TabrisEnvironment; @RunWith( MockitoJUnitRunner.class ) public class TextDecoratorTest { @Rule public TabrisEnvironment environment = new TabrisEnvironment(); @Mock private Text text; private TextDecorator decorator; @Before public void setUp() { decorator = Widgets.onText( text ); } @Test public void testSetAutoCorrectEnabled() { decorator.setAutoCorrectionEnabled( true ); verify( text ).setData( AUTO_CORRECT.getKey(), Boolean.valueOf( true ) ); } @Test public void testSetAutoCorrectDisabled() { decorator.setAutoCorrectionEnabled( false ); verify( text ).setData( AUTO_CORRECT.getKey(), Boolean.valueOf( false ) ); } @Test public void testSetAutoCapitalizeEnabled() { decorator.setAutoCapitalizationEnabled( true ); verify( text ).setData( AUTO_CAPITALIZE.getKey(), Boolean.valueOf( true ) ); } @Test public void testSetAutoCapitalizeDisabled() { decorator.setAutoCapitalizationEnabled( false ); verify( text ).setData( AUTO_CAPITALIZE.getKey(), Boolean.valueOf( false ) ); } @Test public void testUseHintText() { decorator.useHintText( "test" ); verify( text ).setMessage( eq( "test" ) ); } @Test public void testUseAsciiKeyboard() { decorator.useAsciiKeyboard(); verify( text ).setData( KEYBOARD.getKey(), "ascii" ); } @Test public void testUseNumbersAndPunctuationKeyboard() { decorator.useNumbersAndPunctuationKeyboard(); verify( text ).setData( KEYBOARD.getKey(), "numbersAndPunctuation" ); } @Test public void testUseUrlKeyboard() { decorator.useUrlKeyboard(); verify( text ).setData( KEYBOARD.getKey(), "url" ); } @Test public void testUseNumberKeyboard() { decorator.useNumberKeyboard(); verify( text ).setData( KEYBOARD.getKey(), "number" ); } @Test public void testUsePhoneKeyboard() { decorator.usePhoneKeyboard(); verify( text ).setData( KEYBOARD.getKey(), "phone" ); } @Test public void testUseEmailKeyboard() { decorator.useEmailKeyboard(); verify( text ).setData( KEYBOARD.getKey(), "email" ); } @Test public void testUseDecimalKeyboard() { decorator.useDecimalKeyboard(); verify( text ).setData( KEYBOARD.getKey(), "decimal" ); } @Test public void testSetsTextReplacement() { TextReplacementData data = mock( TextReplacementData.class ); when( data.getId() ).thenReturn( "r42" ); decorator.setTextReplacement( data ); verify( text ).setData( TEXT_REPLACEMENT.getKey(), "r42" ); } @Test( expected = IllegalArgumentException.class ) public void testSetTextReplacementFailsWithNullData() { decorator.setTextReplacement( null ); } @Test public void testDoesNotSetTextReplacementWithWebClient() { environment.setClient( mock( WebClient.class ) ); TextReplacementData data = mock( TextReplacementData.class ); when( data.getId() ).thenReturn( "r42" ); decorator.setTextReplacement( data ); verify( text, never() ).setData( TEXT_REPLACEMENT.getKey(), "r42" ); } }