blob: dbcef9da214326a2782c725605e646cfc490f33c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008,2010 Ketan Padegaonkar 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:
* Ketan Padegaonkar - initial API and implementation
*******************************************************************************/
package org.eclipse.swtbot.swt.finder.widgets;
import static org.eclipse.swtbot.swt.finder.SWTBotTestCase.assertTextContains;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.Bullet;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.GlyphMetrics;
import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
import org.eclipse.swtbot.swt.finder.test.AbstractCustomControlExampleTest;
import org.eclipse.swtbot.swt.finder.utils.Position;
import org.junit.Before;
import org.junit.Test;
/**
* @author Ketan Padegaonkar <KetanPadegaonkar [at] gmail [dot] com>
* @version $Id$
*/
public class SWTBotStyledTextTest extends AbstractCustomControlExampleTest {
private SWTBotStyledText styledText;
@Test
public void selectsRange() throws Exception {
styledText.setText("hello world\n" + "it is a very good day today\n" + "good bye world\n" + "it was nice to meet you");
styledText.selectRange(1, 0, 27);
assertEquals("it is a very good day today", styledText.getSelection());
}
@Test
public void findsTextStyle() throws Exception {
setStyles();
StyleRange range = styledText.getStyle(1, 2);
assertEquals(SWT.BOLD, range.fontStyle);
assertTrue(range.underline);
}
@Test
public void findsStylesRangeInARange() throws Exception {
setStyles();
StyleRange[] styles = styledText.getStyles(1, 0, 30);
assertEquals(2, styles.length);
assertTrue(styles[0].underline);
assertEquals(SWT.BOLD, styles[0].fontStyle);
assertEquals(SWT.ITALIC, styles[1].fontStyle);
}
/**
* @throws WidgetNotFoundException
*/
private void setStyles() throws WidgetNotFoundException {
styledText.setText("hello world\n" + "it is a very good day today\n" + "good bye world\n" + "it was nice to meet you");
styledText.selectRange(1, 0, 27);
bot.buttonWithLabel("Bold").click();
styledText.selectRange(1, 0, 27);
bot.buttonWithLabel("Underline").click();
styledText.selectRange(2, 1, 10);
bot.buttonWithLabel("Italic").click();
}
@Test
public void setsText() throws Exception {
styledText.setText("hello world");
assertTextContains("hello world", styledText.widget);
}
@Test
public void navigatesToAParticularLocation() throws Exception {
styledText.setText("hello world\n" + "it is a very good day today\n" + "good bye world\n" + "it was nice to meet you");
styledText.navigateTo(1, 17);
assertEquals(new Position(1, 17), styledText.cursorPosition());
}
@Test
public void typesTextAtALocation() throws Exception {
styledText.typeText(1, 0, "---typed Text---\n");
assertTextContains("---typed Text---", styledText.widget);
}
@Test
public void typesSpecialCharactersAtALocation() throws Exception {
styledText.typeText(1, 0, "---123 #@! :; {} [] ---\n");
assertTextContains("---123 #@! :; {} [] ---", styledText.widget);
}
@Test
public void insertsTextAtALocation() throws Exception {
styledText.insertText(1, 0, "---inserted text---\n");
assertTextContains("---inserted text---", styledText.widget);
}
// FIXME on windows
public void _testTypesTextAtALocation() throws Exception {
styledText.typeText(1, 0, "---\n\typed text\n---\n");
assertTextContains("---\n\typed text\n---\n", styledText.widget);
}
@Test
public void getsTextOnCurrentLine() throws Exception {
styledText.setText("hello world\n" + "it is a very good day today\n" + "good bye world\n" + "it was nice to meet you");
styledText.navigateTo(1, 0);
assertEquals("it is a very good day today", styledText.getTextOnCurrentLine());
}
@Test
public void getsLineCountWithEOLAtEndOfText() throws Exception {
styledText.setText("1\n2\n3\n");
assertEquals(4, styledText.getLineCount());
}
@Test
public void getsLineCountWithNoEOLEndOfText() throws Exception {
styledText.setText("1\n2\n3");
assertEquals(3, styledText.getLineCount());
}
@Test
public void getsLinesWithEOLAtEndOfText() throws Exception {
styledText.setText("1\n2\n3\n");
assertEquals(Arrays.asList("1", "2", "3", ""), styledText.getLines());
}
@Test
public void getsLinesWithNoEOLEndOfText() throws Exception {
styledText.setText("1\n2\n3");
assertEquals(Arrays.asList("1", "2", "3"), styledText.getLines());
}
@Test
public void getsTabs() {
assertEquals(4, styledText.getTabs());
try {
setTabs(15);
assertEquals(15, styledText.getTabs());
} finally {
setTabs(4);
}
}
@Test
public void getsBullet() throws Exception {
styledText.setText("hello world\n" + "it is a very good day today\n" + "good bye world\n" + "it was nice to meet you");
styledText.navigateTo(1, 0);
assertFalse(styledText.hasBulletOnCurrentLine());
display.syncExec(new Runnable() {
@Override
public void run() {
StyledText t = styledText.widget;
StyleRange style = new StyleRange();
style.metrics = new GlyphMetrics(0, 0, 1);
t.setLineBullet(1, 1, new Bullet(style));
}
});
assertTrue(styledText.hasBulletOnCurrentLine());
}
@Before
public void prepareExample() throws Exception {
bot.shell("SWT Custom Controls").activate();
bot.tabItem("StyledText").activate();
styledText = bot.styledTextInGroup("StyledText");
bot.checkBox("Horizontal Fill").select();
bot.checkBox("Vertical Fill").select();
}
private void setTabs(final int tabSize) {
display.syncExec(new Runnable() {
@Override
public void run() {
StyledText t = styledText.widget;
t.setTabs(tabSize);
}
});
}
}