/******************************************************************************* * Copyright (c) 2009 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 ******************************************************************************/ package org.eclipse.swt.custom; import junit.framework.TestCase; import org.eclipse.rwt.Fixture; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.internal.custom.IStyledTextAdapter; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class StyledText_Test extends TestCase { private static final String TXT = "Eclipse is an open source community."; public void testInitialValues() { Display display = new Display(); Shell shell = new Shell( display, SWT.SHELL_TRIM ); StyledText styledText = new StyledText( shell, SWT.NONE ); assertEquals( "", styledText.getText() ); assertEquals( 0, styledText.getCaretOffset() ); assertEquals( new Point( 0, 0 ), styledText.getSelection() ); assertEquals( 0, styledText.getStyleRanges().length ); } public void testText() { Display display = new Display(); Shell shell = new Shell( display, SWT.SHELL_TRIM ); StyledText styledText = new StyledText( shell, SWT.NONE ); styledText.setText( TXT ); assertEquals( TXT, styledText.getText() ); assertEquals( TXT.length(), styledText.getCharCount() ); try { styledText.setText( null ); fail( "Must not allow to set null-text." ); } catch( IllegalArgumentException e ) { // expected } } public void testSelectionText() { Display display = new Display(); Shell shell = new Shell( display, SWT.SHELL_TRIM ); StyledText styledText = new StyledText( shell, SWT.NONE ); styledText.setText( TXT ); styledText.setSelection( 14, 25 ); assertEquals( "open source", styledText.getSelectionText() ); } public void testSelection() { Display display = new Display(); Shell shell = new Shell( display, SWT.SHELL_TRIM ); StyledText styledText = new StyledText( shell, SWT.NONE ); styledText.setText( TXT ); styledText.setSelection( 0, 7 ); assertEquals( new Point( 0, 7 ), styledText.getSelection() ); styledText.setSelection( 10, 300 ); assertEquals( new Point( 10, 36 ), styledText.getSelection() ); } public void testCaretOffset() { Display display = new Display(); Shell shell = new Shell( display, SWT.SHELL_TRIM ); StyledText styledText = new StyledText( shell, SWT.NONE ); styledText.setText( TXT ); styledText.setCaretOffset( 10 ); assertEquals( 10, styledText.getCaretOffset() ); styledText.setCaretOffset( 300 ); assertEquals( 36, styledText.getCaretOffset() ); } public void testStyleRange() { Display display = new Display(); Shell shell = new Shell( display, SWT.SHELL_TRIM ); StyledText styledText = new StyledText( shell, SWT.NONE ); styledText.setText( TXT ); assertEquals( 0, styledText.getStyleRanges().length ); StyleRange sr = new StyleRange(); sr.start = 10; sr.length = 10; sr.fontStyle = SWT.BOLD; styledText.setStyleRange( sr ); assertEquals( 1, styledText.getStyleRanges().length ); StyleRange sr1 = new StyleRange(); sr1.start = 12; sr1.length = 6; sr1.fontStyle = SWT.ITALIC; styledText.setStyleRange( sr1 ); assertEquals( 3, styledText.getStyleRanges().length ); StyleRange sr2 = new StyleRange(); sr2.start = 12; sr2.length = 100; sr2.fontStyle = SWT.ITALIC; try { styledText.setStyleRange( sr2 ); fail( "Must not allow to set range out of text bounds." ); } catch( IllegalArgumentException e ) { // expected } } public void testAdapter() { Display display = new Display(); Shell shell = new Shell( display, SWT.SHELL_TRIM ); StyledText styledText = new StyledText( shell, SWT.NONE ); styledText.setText( TXT ); IStyledTextAdapter adapter = ( IStyledTextAdapter )styledText.getAdapter( IStyledTextAdapter.class ); String html = adapter.getHtml(); String expected = "<span id=sr0></span><span id=sel></span>" + "<span id=sr0>Eclipse is an open source community.</span>"; assertEquals( expected, html ); } public void testGenerateHtml() { Display display = new Display(); Shell shell = new Shell( display, SWT.SHELL_TRIM ); StyledText styledText = new StyledText( shell, SWT.NONE ); styledText.setText( TXT ); IStyledTextAdapter adapter = ( IStyledTextAdapter )styledText.getAdapter( IStyledTextAdapter.class ); StyleRange sr = new StyleRange(); sr.start = 10; sr.length = 10; sr.fontStyle = SWT.BOLD; styledText.setStyleRange( sr ); String html = adapter.getHtml(); String expected = "<span id=sr0></span><span id=sel></span>" + "<span id=sr0>Eclipse is</span>" + "<span id=sr10 style='font-weight:bold;'> an open s</span>" + "<span id=sr20>ource community.</span>"; assertEquals( expected, html ); styledText.setSelection( 14, 25 ); html = adapter.getHtml(); expected = "<span id=sr0>Eclipse is</span>" + "<span id=sr10 style='font-weight:bold;'> an </span>" + "<span id=sel><span id=sr14 style='font-weight:bold;'>open s</span>" + "<span id=sr20>ource</span></span><span id=sr25> community.</span>"; assertEquals( expected, html ); } protected void setUp() throws Exception { Fixture.setUp(); } protected void tearDown() throws Exception { Fixture.tearDown(); } }