From beabf33a8463174b6209c4405f461ef46e8e1aef Mon Sep 17 00:00:00 2001 From: Sergey Vladimirov <sergey@apache.org> Date: Thu, 7 Jul 2011 13:13:04 +0000 Subject: [PATCH] already fixed 48065 - Problems with save output of HWPF (losing formatting) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1143809 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../poi/hwpf/usermodel/TestProblems.java | 47 ++++++++++++++++++ test-data/document/Bug48065.doc | Bin 0 -> 28160 bytes 3 files changed, 48 insertions(+) create mode 100644 test-data/document/Bug48065.doc diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 650689862..175ed9c17 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ <changes> <release version="3.8-beta4" date="2011-??-??"> + <action dev="poi-developers" type="fix">48065 - Problems with save output of HWPF (losing formatting)</action> <action dev="poi-developers" type="fix">47563 - Exception when working with table</action> <action dev="poi-developers" type="fix">47287 - StringIndexOutOfBoundsException in CharacterRun.replaceText()</action> <action dev="poi-developers" type="fix">46817 - Regression: Text from some table cells missing</action> diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java index f0664b3b0..38fba59fd 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java @@ -691,6 +691,53 @@ public final class TestProblems extends HWPFTestCase { } } + /** + * [RESOLVED FIXED] Bug 48065 - Problems with save output of HWPF (losing + * formatting) + */ + public void test48065() + { + HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile( "Bug48065.doc" ); + HWPFDocument doc2 = HWPFTestDataSamples.writeOutAndReadBack( doc1 ); + + Range expected = doc1.getRange(); + Range actual = doc2.getRange(); + + assertEquals( + expected.text().replace( "\r", "\n" ).replaceAll( "\n\n", "\n" ), + actual.text().replace( "\r", "\n" ).replaceAll( "\n\n", "\n" ) ); + + assertEquals( expected.numParagraphs(), actual.numParagraphs() ); + for ( int p = 0; p < expected.numParagraphs(); p++ ) + { + Paragraph expParagraph = expected.getParagraph( p ); + Paragraph actParagraph = actual.getParagraph( p ); + + assertEquals( expParagraph.text(), actParagraph.text() ); + assertEquals( expParagraph.isInTable(), actParagraph.isInTable() ); + assertEquals( expParagraph.isTableRowEnd(), + actParagraph.isTableRowEnd() ); + + if ( expParagraph.isInTable() && actParagraph.isInTable() ) + { + Table expTable, actTable; + try + { + expTable = expected.getTable( expParagraph ); + actTable = actual.getTable( actParagraph ); + } + catch ( Exception exc ) + { + continue; + } + + assertEquals( expTable.numRows(), actTable.numRows() ); + assertEquals( expTable.numParagraphs(), + actTable.numParagraphs() ); + } + } + } + /** * Bug 50936 - HWPF fails to read a file */ diff --git a/test-data/document/Bug48065.doc b/test-data/document/Bug48065.doc new file mode 100644 index 0000000000000000000000000000000000000000..8dce3dbdfb75810edf05cae074ef49eb1d0499ba GIT binary patch literal 28160 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 literal 0 HcmV?d00001