diff options
author | Markus Keller | 2015-01-12 11:46:38 +0000 |
---|---|---|
committer | Markus Keller | 2015-01-12 11:46:38 +0000 |
commit | 83d48d8e25fcde38af87c234a9450953d1488b2a (patch) | |
tree | 688f6b580a62a9fcfa5679b45a61ba554a548ba3 /org.eclipse.jface.text.tests | |
parent | a95f8a2791903995880f9847e2817d595f8e4538 (diff) | |
download | eclipse.platform.text-83d48d8e25fcde38af87c234a9450953d1488b2a.tar.gz eclipse.platform.text-83d48d8e25fcde38af87c234a9450953d1488b2a.tar.xz eclipse.platform.text-83d48d8e25fcde38af87c234a9450953d1488b2a.zip |
Bug 457230: HTML2TextReader mangles bold style ranges after <pre>I20150113-0800
Diffstat (limited to 'org.eclipse.jface.text.tests')
-rw-r--r-- | org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/HTML2TextReaderTest.java | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/HTML2TextReaderTest.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/HTML2TextReaderTest.java index 1d85c8b3275..b38a7fb85d7 100644 --- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/HTML2TextReaderTest.java +++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/HTML2TextReaderTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2012 IBM Corporation and others. + * Copyright (c) 2006, 2015 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 @@ -24,6 +24,7 @@ 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.jface.internal.text.html.HTML2TextReader; @@ -45,6 +46,13 @@ public class HTML2TextReaderTest extends TestCase { return new TestSuite(HTML2TextReaderTest.class); } + /** + * @param input + * @param expectedOutput + * @param styleRangeCount + * @throws IOException + * @deprecated pass actual style ranges + */ private void verify(String input, String expectedOutput, int styleRangeCount) throws IOException { Reader reader= new StringReader(input); TextPresentation textPresentation= new TextPresentation(); @@ -81,6 +89,42 @@ public class HTML2TextReaderTest extends TestCase { } + private void verify(String input, String expectedOutput, StyleRange[] styleRanges) throws IOException { + Reader reader= new StringReader(input); + TextPresentation textPresentation= new TextPresentation(); + HTML2TextReader htmlReader= new HTML2TextReader(reader, textPresentation); + String result= htmlReader.getString(); + if (DEBUG) + System.out.println("<" + result + "/>"); + assertEquals(expectedOutput, result); + + Iterator styleRangeIterator= textPresentation.getAllStyleRangeIterator(); + List ranges= new ArrayList(); + while (styleRangeIterator.hasNext()) { + ranges.add(styleRangeIterator.next()); + } + + Collections.sort(ranges, new Comparator() { + public int compare(Object o1, Object o2) { + StyleRange range1= (StyleRange)o1; + StyleRange range2= (StyleRange)o2; + return range1.start - range2.start; + } + }); + + assertEquals(Arrays.asList(styleRanges), ranges); + + for (int i= 0; i < ranges.size() - 1; i++) { + StyleRange range1= (StyleRange)ranges.get(i); + StyleRange range2= (StyleRange)ranges.get(i + 1); + + if (range1.start + range1.length > range2.start) { + assertTrue("StyleRanges overlap", false); + } + } + + } + public void test0() throws IOException{ String string= "<code>3<5<code>"; String expected= "3<5"; @@ -211,5 +255,16 @@ public class HTML2TextReaderTest extends TestCase { String expected= "This is yet another test"; verify(string, expected, 3); } + + public void testStylesWithPre() throws IOException { + String string= "I am <b>bold</b>.\n<p>\n<pre>One\n\n<b>T</b>hree.</pre>\n<p>\n<b>Author:</b> me."; + String expected= "I am bold. \nOne\n\nThree. \nAuthor: me."; + StyleRange[] ranges= { + new StyleRange(5, 4, null, null, SWT.BOLD), + new StyleRange(17, 1, null, null, SWT.BOLD), + new StyleRange(25, 7, null, null, SWT.BOLD) + }; + verify(string, expected, ranges); + } } |