summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKnut Radloff <kradloff>2002-07-26 16:01:33 +0000
committerKnut Radloff <kradloff>2002-07-26 16:01:33 +0000
commitab5ad7c93b61eb893a22df1d1c9e85f5667b8032 (patch)
tree2e58032dee0730a3ed5c5acbfd716bc8a2c0992e
parent7c792fbfb245e095de7492a841c53ba97a7be55a (diff)
downloadeclipse.platform.swt-ab5ad7c93b61eb893a22df1d1c9e85f5667b8032.tar.gz
eclipse.platform.swt-ab5ad7c93b61eb893a22df1d1c9e85f5667b8032.tar.xz
eclipse.platform.swt-ab5ad7c93b61eb893a22df1d1c9e85f5667b8032.zip
Regression test for bug 19985
-rw-r--r--tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java
index 5457937145..1aa5107904 100644
--- a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java
+++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java
@@ -598,6 +598,7 @@ public void test_copy() {
}
assertTrue(":g:", clipboardText != null && clipboardText.equals(convertedText));
+ testRtfCopy();
clipboard.dispose();
}
@@ -4166,4 +4167,73 @@ protected void runTest() throws Throwable {
else if (getName().equals("test_showSelection")) test_showSelection();
else super.runTest();
}
+/**
+ * Regression test for bug 19985
+ */
+protected void testRtfCopy() {
+ String lines = "Line0\nLine1\nLine2\nLine3\nLine4\nLine5";
+ boolean exceptionThrown = false;
+ final int[] linesCalled = new int[] {0};
+ LineStyleListener listener = new LineStyleListener() {
+ public void lineGetStyle(LineStyleEvent event) {
+ Display display = Display.getDefault();
+ Color red = display.getSystemColor(SWT.COLOR_RED);
+ StyledText styledText = (StyledText) event.widget;
+ int lineIndex = styledText.getLineAtOffset(event.lineOffset);
+ int lineStart = event.lineOffset;
+ int lineEnd = lineStart + event.lineText.length();
+ StyleRange goodRange = new StyleRange(0, 1, red, red);
+
+ event.styles = new StyleRange[2];
+ switch (lineIndex % 6) {
+ case 0:
+ event.styles[0] = goodRange;
+ event.styles[1] = new StyleRange(lineEnd, 1, red, red);
+ linesCalled[0]++;
+ break;
+ case 1:
+ event.styles[0] = goodRange;
+ event.styles[1] = new StyleRange(lineEnd, -1, red, red);
+ linesCalled[0]++;
+ break;
+ case 2:
+ event.styles[0] = goodRange;
+ event.styles[1] = new StyleRange(lineEnd - 1, -1, red, red);
+ linesCalled[0]++;
+ break;
+ case 3:
+ event.styles[0] = goodRange;
+ event.styles[1] = new StyleRange(lineStart, -1, red, red);
+ linesCalled[0]++;
+ break;
+ case 4:
+ event.styles[0] = new StyleRange(lineStart, 1, red, red);
+ event.styles[1] = new StyleRange(lineStart, -1, red, red);
+ linesCalled[0]++;
+ break;
+ case 5:
+ event.styles[0] = new StyleRange(lineEnd / 2, 1, red, red);
+ event.styles[1] = new StyleRange(lineEnd / 2, -1, red, red);
+ linesCalled[0]++;
+ break;
+ }
+ }
+ };
+ text.setText(lines);
+ // cause StyledText to call the listener.
+ text.setSelection(0, text.getCharCount());
+ text.addLineStyleListener(listener);
+ text.copy();
+ assertTrue("not all lines tested for RTF copy", linesCalled[0] == text.getLineCount());
+
+ Clipboard clipboard = new Clipboard(text.getDisplay());
+ RTFTransfer rtfTranfer = RTFTransfer.getInstance();
+ String clipboardText = (String) clipboard.getContents(rtfTranfer);
+ assertTrue("RTF copy failed", clipboardText.length() > 0);
+
+ clipboard.dispose();
+ text.removeLineStyleListener(listener);
+}
+
}
+