blob: 384629d68bd7be068c154ea366ec466894ea7717 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jface.tests.viewers;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.graphics.TextStyle;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.StyledString.Styler;
public class StyledStringBuilderTest extends TestCase {
public static class TestStyler extends Styler {
public final int borderStyle;
public TestStyler(int borderStyle) {
this.borderStyle= borderStyle;
}
public void applyStyles(TextStyle textStyle) {
textStyle.borderStyle= borderStyle;
}
}
public static final TestStyler STYLER1= new TestStyler(SWT.BORDER_DOT);
public static final TestStyler STYLER2= new TestStyler(SWT.BORDER_DASH);
public static Test allTests() {
return new TestSuite(StyledStringBuilderTest.class);
}
public static Test suite() {
return allTests();
}
public void testEmpty() {
StyledString styledString= new StyledString();
String str= "";
assertEquals(str.length(), styledString.length());
assertEquals(str, styledString.getString());
assertEquals(styledString.getStyleRanges().length, 0);
}
public void testAppendString1() {
StyledString styledString= new StyledString();
String str= "Hello";
styledString.append(str, STYLER1);
assertEquals(str.length(), styledString.length());
assertEquals(str, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, str.length());
}
public void testAppendString2() {
StyledString styledString= new StyledString();
String str1= "Hello";
String str2= "You";
styledString.append(str1);
styledString.append(str2, STYLER1);
String res= str1 + str2;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, str1.length(), str2.length());
}
public void testAppendString3() {
StyledString styledString= new StyledString();
String str1= "Hello";
String str2= "You";
styledString.append(str1, STYLER1);
styledString.append(str2);
String res= str1 + str2;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, str1.length());
}
public void testAppendString4() {
StyledString styledString= new StyledString();
String str1= "Hello";
String str2= "You";
styledString.append(str1);
styledString.append(str2, STYLER1);
styledString.append(str2, STYLER1);
String res= str1 + str2 + str2;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, str1.length(), str2.length() * 2);
}
public void testAppendString5() {
StyledString styledString= new StyledString();
String str1= "Hello";
String str2= "You";
String str3= "Me";
styledString.append(str1);
styledString.append(str2, STYLER1);
styledString.append(str3, STYLER2);
String res= str1 + str2 + str3;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, str1.length(), str2.length());
assertEquals(styleRanges[1], STYLER2, str1.length() + str2.length(), str3.length());
}
public void testAppendString6() {
StyledString styledString= new StyledString();
String str1= "Hello";
String str2= "You";
String str3= "Me";
styledString.append(str1, STYLER1);
styledString.append(str2);
styledString.append(str3, STYLER2);
String res= str1 + str2 + str3;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, str1.length());
assertEquals(styleRanges[1], STYLER2, str1.length() + str2.length(), str3.length());
}
public void testAppendString7() {
StyledString styledString= new StyledString();
String str1= "Hello";
String str2= "";
String str3= "Me";
styledString.append(str1, STYLER1);
styledString.append(str2, STYLER2);
styledString.append(str3, STYLER1);
String res= str1 + str2 + str3;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, res.length());
}
public void testAppendChar1() {
StyledString styledString= new StyledString();
styledString.append('H', STYLER1);
styledString.append('2', STYLER2);
styledString.append('O', STYLER1);
String res= "H2O";
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(3, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, 1);
assertEquals(styleRanges[1], STYLER2, 1, 1);
assertEquals(styleRanges[2], STYLER1, 2, 1);
}
public void testAppendChar2() {
StyledString styledString= new StyledString();
styledString.append('H', STYLER1);
styledString.append('2');
styledString.append('O', STYLER2);
String res= "H2O";
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, 1);
assertEquals(styleRanges[1], STYLER2, 2, 1);
}
public void testAppendStyledString1() {
StyledString other= new StyledString();
String str2= "You";
String str3= "Me";
other.append(str2, STYLER1);
other.append(str3, STYLER2);
String str1= "We";
StyledString styledString= new StyledString(str1);
styledString.append(other);
String res= str1 + str2 + str3;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, str1.length(), str2.length());
assertEquals(styleRanges[1], STYLER2, str1.length() + str2.length(), str3.length());
}
public void testAppendStyledString2() {
StyledString other= new StyledString();
String str2= "You";
String str3= "Me";
other.append(str2, STYLER1);
other.append(str3, STYLER2);
String str1= "We";
StyledString styledString= new StyledString(str1, STYLER1);
styledString.append(other);
String res= str1 + str2 + str3;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, str1.length() + str2.length());
assertEquals(styleRanges[1], STYLER2, str1.length() + str2.length(), str3.length());
}
public void testAppendStyledString3() {
StyledString other= new StyledString();
String str2= "You";
String str3= "Me";
other.append(str2);
other.append(str3, STYLER2);
String str1= "We";
StyledString styledString= new StyledString(str1, STYLER1);
styledString.append(other);
String res= str1 + str2 + str3;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, str1.length());
assertEquals(styleRanges[1], STYLER2, str1.length() + str2.length(), str3.length());
}
public void testAppendStyledString4() {
StyledString other= new StyledString();
String str2= "You";
String str3= "Me";
other.append(str2, STYLER2);
other.append(str3);
String str1= "We";
StyledString styledString= new StyledString(str1, STYLER1);
styledString.append(other);
String res= str1 + str2 + str3;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, str1.length());
assertEquals(styleRanges[1], STYLER2, str1.length(), str2.length());
}
public void testAppendStyledString5() {
StyledString other= new StyledString();
String str2= "You";
String str3= "Me";
other.append(str2);
other.append(str3, STYLER1);
String str1= "We";
StyledString styledString= new StyledString(str1);
styledString.append(other);
String res= str1 + str2 + str3;
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, str1.length() + str2.length(), str3.length());
}
public void testSetStyle1() {
String str1= "One";
String str2= "Two";
String str3= "Three";
String res= str1 + str2 + str3;
StyledString styledString= new StyledString();
styledString.append(res);
styledString.setStyle(0, str1.length(), STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, str1.length());
}
public void testSetStyle2() {
String str1= "One";
String str2= "Two";
String str3= "Three";
String res= str1 + str2 + str3;
StyledString styledString= new StyledString();
styledString.append(res);
styledString.setStyle(str1.length(), str2.length(), STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, str1.length(), str2.length());
}
public void testSetStyle3() {
String str1= "One";
String str2= "Two";
String str3= "Three";
String res= str1 + str2 + str3;
StyledString styledString= new StyledString();
styledString.append(res);
styledString.setStyle(str1.length(), res.length() - str1.length(), STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, str1.length(), res.length() - str1.length());
}
public void testSetStyle4() {
String str1= "One";
String str2= "Two";
String str3= "Three";
String res= str1 + str2 + str3;
StyledString styledString= new StyledString();
styledString.append(res);
styledString.setStyle(0, res.length(), STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, res.length());
}
public void testSetStyle5() {
String str1= "One";
String str2= "Two";
String str3= "Three";
String res= str1 + str2 + str3;
StyledString styledString= new StyledString();
styledString.append(res);
styledString.setStyle(0, res.length(), null);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(0, styleRanges.length);
}
public void testSetStyle6() {
String str1= "One";
String str2= "Two";
String res= str1 + str2;
StyledString styledString= new StyledString(str1, STYLER1);
styledString.append(str2);
styledString.setStyle(str1.length(), str2.length(), STYLER2);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, str1.length());
assertEquals(styleRanges[1], STYLER2, str1.length(), str2.length());
}
public void testSetStyle7() {
String str1= "One";
String str2= "Two";
String res= str1 + str2;
StyledString styledString= new StyledString(str1);
styledString.append(str2, STYLER1);
styledString.setStyle(0, str1.length(), STYLER2);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER2, 0, str1.length());
assertEquals(styleRanges[1], STYLER1, str1.length(), str2.length());
}
public void testSetStyle8() {
String str1= "One";
String str2= "Two";
String res= str1 + str2;
StyledString styledString= new StyledString();
styledString.append(str1, STYLER1);
styledString.append(str2, STYLER2);
styledString.setStyle(0, str1.length(), STYLER2);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER2, 0, res.length());
}
public void testSetStyle9() {
String str1= "One";
String str2= "Two";
String res= str1 + str2;
StyledString styledString= new StyledString();
styledString.append(str1, STYLER1);
styledString.append(str2, STYLER2);
styledString.setStyle(0, res.length(), null);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(0, styleRanges.length);
}
public void testSetStyle10() {
String str1= "One";
String str2= "Two";
String res= str1 + str2;
StyledString styledString= new StyledString();
styledString.append(str1, STYLER1);
styledString.append(str2, STYLER2);
styledString.setStyle(1, res.length() - 2, null);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, 1);
assertEquals(styleRanges[1], STYLER2, res.length() - 1, 1);
}
public void testSetStyle11() {
String str1= "One";
String str2= "Two";
String res= str1 + str2;
StyledString styledString= new StyledString();
styledString.append(str1, STYLER1);
styledString.append(str2, STYLER2);
styledString.setStyle(1, res.length() - 1, STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, res.length());
}
public void testSetStyle12() {
String str1= "One";
String str2= "Two";
String res= str1 + str2;
StyledString styledString= new StyledString();
styledString.append(str1, STYLER1);
styledString.append(str2, STYLER2);
styledString.setStyle(0, res.length() - 1, STYLER2);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER2, 0, res.length());
}
public void testSetStyle13() {
String str1= "One";
String str2= "Two";
String res= str1 + str2;
StyledString styledString= new StyledString();
styledString.append(str1, STYLER1);
styledString.append(str2, STYLER2);
styledString.setStyle(1, res.length() - 2, STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, res.length() - 1);
assertEquals(styleRanges[1], STYLER2, res.length() - 1, 1);
}
public void testSetStyle14() {
String str1= "One";
String str2= "Two";
String res= str1 + str2;
StyledString styledString= new StyledString();
styledString.append(str1, STYLER1);
styledString.append(str2, STYLER2);
styledString.setStyle(1, res.length() - 2, STYLER2);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, 1);
assertEquals(styleRanges[1], STYLER2, 1, res.length() - 1);
}
public void testSetStyle15() {
String str1= "One";
String str2= "Two";
String res= str1 + str2;
StyledString styledString= new StyledString();
styledString.append(str1, null);
styledString.append(str2, STYLER2);
styledString.setStyle(0, 1, STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, 1);
assertEquals(styleRanges[1], STYLER2, str1.length(), str2.length());
}
public void testSetStyle16() {
String res= "H2O";
StyledString styledString= new StyledString();
styledString.append('H', null);
styledString.append('2', STYLER1);
styledString.append('O', STYLER2);
styledString.setStyle(0, res.length(), STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 0, res.length());
}
public void testSetStyle17() {
String res= "H2O";
StyledString styledString= new StyledString();
styledString.append('H', null);
styledString.append('2', STYLER1);
styledString.append('O', STYLER2);
styledString.setStyle(0, res.length(), null);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(0, styleRanges.length);
}
public void testSetStyle18() {
String res= "H2OH2O";
StyledString styledString= new StyledString();
styledString.append('H', null);
styledString.append('2', STYLER1);
styledString.append('O', STYLER2);
styledString.append('H', null);
styledString.append('2', STYLER2);
styledString.append('O', STYLER1);
styledString.setStyle(1, res.length() - 2, STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 1, res.length() - 1);
}
public void testSetStyle19() {
String res= "O2O2O2O2O2O2";
StyledString styledString= new StyledString();
styledString.append("O2", null);
styledString.append("O2", STYLER1);
styledString.append("O2", STYLER2);
styledString.append("O2", STYLER1);
styledString.append("O2", STYLER2);
styledString.append("O2", null);
styledString.setStyle(1, res.length() - 2, STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 1, res.length() - 2);
}
public void testSetStyle20() {
String res= "O2O2O2O2O2O2";
StyledString styledString= new StyledString();
styledString.append("O2", null);
styledString.append("O2", STYLER1);
styledString.append("O2", STYLER2);
styledString.append("O2", STYLER1);
styledString.append("O2", STYLER2);
styledString.append("O2", null);
styledString.setStyle(3, 6, null);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 2, 1);
assertEquals(styleRanges[1], STYLER2, 9, 1);
}
public void testSetStyle21() {
String res= "O2O2O2O2O2O2";
StyledString styledString= new StyledString();
styledString.append("O2", null);
styledString.append("O2", STYLER1);
styledString.append("O2", STYLER2);
styledString.append("O2", STYLER1);
styledString.append("O2", STYLER2);
styledString.append("O2", null);
styledString.setStyle(3, 6, STYLER1);
styledString.setStyle(3, 6, null);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(2, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, 2, 1);
assertEquals(styleRanges[1], STYLER2, 9, 1);
}
public void testCombination1() {
String str1= "One";
String str2= "Two";
String res= str1 + str2 + str1;
StyledString styledString= new StyledString();
styledString.append(str1, null);
styledString.append(str2, STYLER2);
styledString.setStyle(str1.length(), str2.length(), STYLER1);
styledString.append(str1, STYLER1);
assertEquals(res.length(), styledString.length());
assertEquals(res, styledString.getString());
StyleRange[] styleRanges= styledString.getStyleRanges();
assertEquals(1, styleRanges.length);
assertEquals(styleRanges[0], STYLER1, str1.length(), str2.length() + str1.length());
}
private void assertEquals(StyleRange range, TestStyler style, int offset, int length) {
assertEquals(offset, range.start);
assertEquals(length, range.length);
assertEquals(style.borderStyle, range.borderStyle);
}
}