From c2d09c0217c4ead2a44156639cd16b49fb0a99ac Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 6 Oct 2017 17:41:20 +0000 Subject: [PATCH] Bug 61586: Add test which shows that it works as expected git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1811355 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hwpf/usermodel/TestRangeSymbols.java | 96 ++++++++++++++++-- test-data/document/61586.doc | Bin 0 -> 27648 bytes 2 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 test-data/document/61586.doc diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeSymbols.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeSymbols.java index 449bdffc2..49902b77c 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeSymbols.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeSymbols.java @@ -19,16 +19,18 @@ package org.apache.poi.hwpf.usermodel; import java.io.IOException; -import junit.framework.TestCase; - import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFTestDataSamples; +import org.apache.poi.hwpf.model.Ffn; +import org.junit.Test; + +import static org.junit.Assert.*; /** * API for processing of symbols, see Bugzilla 49908 */ -public final class TestRangeSymbols extends TestCase { - +public final class TestRangeSymbols { + @Test public void test() throws IOException { HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug49908.doc"); @@ -36,13 +38,93 @@ public final class TestRangeSymbols extends TestCase { assertTrue(range.numCharacterRuns() >= 2); CharacterRun chr = range.getCharacterRun(0); - assertEquals(false, chr.isSymbol()); + assertFalse(chr.isSymbol()); chr = range.getCharacterRun(1); - assertEquals(true, chr.isSymbol()); + assertTrue(chr.isSymbol()); assertEquals("\u0028", chr.text()); - assertEquals("Wingdings", chr.getSymbolFont().getMainFontName()); + Ffn symbolFont = chr.getSymbolFont(); + assertNotNull(symbolFont); + assertEquals("Wingdings", symbolFont.getMainFontName()); assertEquals(0xf028, chr.getSymbolCharacter()); } + @Test + public void test61586() throws IOException { + HWPFDocument document = HWPFTestDataSamples.openSampleFile("61586.doc"); + assertEquals("\r" + + "\r" + + "TEST( \r" + + "111 (g.h/mL (AUC) and 15 (g/mL (Cmax). \r" + + "TEST( \r" + + "Greek mu(\r" + + "(\r\r", document.getText().toString()); + + Range range = document.getRange(); + + assertEquals(26, range.numCharacterRuns()); + + // newline + CharacterRun chr = range.getCharacterRun(0); + assertFalse(chr.isSymbol()); + assertEquals("\r", chr.text()); + + // "TEST" + chr = range.getCharacterRun(2); + assertFalse(chr.isSymbol()); + assertEquals("TEST", chr.text()); + + // "registered" symbol + chr = range.getCharacterRun(3); + assertTrue(chr.isSymbol()); + assertEquals("\u0028", chr.text()); + Ffn symbolFont = chr.getSymbolFont(); + assertNotNull(symbolFont); + assertEquals("Symbol", symbolFont.getMainFontName()); + assertEquals(0xf0e2, chr.getSymbolCharacter()); + assertEquals("(", chr.text()); + + // Greek "mu" symbol + chr = range.getCharacterRun(8); + assertTrue(chr.isSymbol()); + assertEquals("\u0028", chr.text()); + symbolFont = chr.getSymbolFont(); + assertNotNull(symbolFont); + assertEquals("Symbol", symbolFont.getMainFontName()); + assertEquals(0xf06d, chr.getSymbolCharacter()); + + // Greek "mu" symbol + chr = range.getCharacterRun(12); + assertTrue(chr.isSymbol()); + assertEquals("\u0028", chr.text()); + symbolFont = chr.getSymbolFont(); + assertNotNull(symbolFont); + assertEquals("Symbol", symbolFont.getMainFontName()); + assertEquals(0xf06d, chr.getSymbolCharacter()); + + // "registered" symbol + chr = range.getCharacterRun(17); + assertTrue(chr.isSymbol()); + assertEquals("\u0028", chr.text()); + symbolFont = chr.getSymbolFont(); + assertNotNull(symbolFont); + assertEquals("Symbol", symbolFont.getMainFontName()); + assertEquals(0xf0e2, chr.getSymbolCharacter()); + + // Greek "mu" symbol + chr = range.getCharacterRun(21); + assertTrue(chr.isSymbol()); + assertEquals("\u0028", chr.text()); + symbolFont = chr.getSymbolFont(); + assertNotNull(symbolFont); + assertEquals("Symbol", symbolFont.getMainFontName()); + assertEquals(0xf06d, chr.getSymbolCharacter()); + + // normal bracket, not a symbol + chr = range.getCharacterRun(23); + assertFalse(chr.isSymbol()); + assertEquals("\u0028", chr.text()); + + document.close(); + } } \ No newline at end of file diff --git a/test-data/document/61586.doc b/test-data/document/61586.doc new file mode 100644 index 0000000000000000000000000000000000000000..cc044515a34b946a4bb3dde5bf9930a5e25df8d7 GIT binary patch literal 27648 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 B8CL)R literal 0 HcmV?d00001