blob: 774ccc9133b7a5bcb7927e9130121f549363668b [file] [log] [blame]
/**
* Copyright (c) 2017 Angelo ZERR.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Angelo Zerr <angelo.zerr@gmail.com> - Customize different line spacing of StyledText - Bug 522020
*/
package org.eclipse.swt.tests.junit;
import static org.junit.Assert.assertArrayEquals;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.custom.StyledTextLineSpacingProvider;
import org.eclipse.swt.widgets.Shell;
import org.junit.Before;
import org.junit.Test;
/**
* Automated Test Suite for class
* org.eclipse.swt.custom.StyledTextLineSpacingProvider
*
* @see org.eclipse.swt.custom.StyledTextLineSpacingProvider
*/
public class Test_org_eclipse_swt_custom_StyledTextLineSpacingProvider {
class IntegerLineSpacingProvider implements StyledTextLineSpacingProvider {
@Override
public Integer getLineSpacing(int lineIndex) {
try {
String text = styledText.getLine(lineIndex);
return Integer.parseInt(text);
} catch (Exception e) {
return null;
}
}
}
Shell shell;
StyledText styledText;
@Before
public void setUp() {
shell = new Shell();
styledText = new StyledText(shell, SWT.NULL);
}
@Test
public void test_setLineSpacingProvider() {
styledText.setText("a\n45\nc\n57");
// Tests with none line spacing provider
assertLineSpacingEquals(0, 0, 0, 0, 0);
// Tests with integer line spacing provider
styledText.setLineSpacingProvider(new IntegerLineSpacingProvider());
assertLineSpacingEquals(0, 0, 45, 0, 57);
// Tests with reset line spacing provider
styledText.setLineSpacingProvider(null);
assertLineSpacingEquals(0, 0, 0, 0, 0);
}
@Test
public void test_replaceTextRange() {
styledText.setText("a\n45\nc\n57");
styledText.setLineSpacingProvider(new IntegerLineSpacingProvider());
assertLineSpacingEquals(0, 0, 45, 0, 57);
// Replace 45 with b
styledText.replaceTextRange(2, 2, "b");
assertLineSpacingEquals(0, 0, 0, 0, 57);
// Replace b with 45
styledText.replaceTextRange(2, 1, "45");
assertLineSpacingEquals(0, 0, 45, 0, 57);
}
private void assertLineSpacingEquals(int... expecteds) {
int lineHeight = styledText.getLineHeight();
int[] actuals = new int[expecteds.length];
for (int i = 0; i < expecteds.length; i++) {
actuals[i] = styledText.getLinePixel(i) - ((i > 0) ? styledText.getLinePixel(i - 1) + lineHeight : 0);
}
assertArrayEquals(expecteds, actuals);
}
}