ASF Bugzilla – Attachment 32691 Details for
Bug 56998
[PATCH] Patch to allow for proper list number formatting in HWPF
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Added a unit test
POI-56998.patch (text/plain), 4.09 KB, created by
Tim Allison
on 2015-04-27 17:19:29 UTC
(
hide
)
Description:
Added a unit test
Filename:
MIME Type:
Creator:
Tim Allison
Created:
2015-04-27 17:19:29 UTC
Size:
4.09 KB
patch
obsolete
>Index: src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java >=================================================================== >--- src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java (revision 1676333) >+++ src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java (working copy) >@@ -174,6 +174,41 @@ > return _lvlf.getIxchFollow(); > } > >+ /** >+ * An unsigned integer that specifies the first (most-significant) zero-based level after which the number sequence of this level does not restart. The number sequence of this level does restart after any level that is more significant than the specified level. This MUST be less than or equal to the zero-based level of the list to which this LVLF corresponds. >+ * <p>see [MS-DOC], v20140721, 2.9.150</p> >+ * >+ * @return the first ({@code 0} is the most significant) level after which >+ * the numbering does not restart or {@code -1} if no restart is applicable >+ */ >+ public short getRestart() { >+ return _lvlf.isFNoRestart() ? _lvlf.getIlvlRestartLim() : -1; >+ } >+ >+ /** >+ * Determines if the number formatting shall be overridden by >+ * {@code msonfcArabic}; unless it originally was {@code msonfcArabicLZ} >+ * in which case it is preserved. >+ * <p>see [MS-DOC], v20140721, 2.9.150 and [MS-OSHARED], v20140721, 2.2.1.3</p> >+ * >+ * @return {@code true} if the level numbering of this and all more >+ * significant levels must be overridden; {@code false} otherwise >+ */ >+ public boolean isLegalNumbering() { >+ return _lvlf.isFLegal(); >+ } >+ >+ /** >+ * Array which specifies the character offsets of the level numbers in a >+ * level numbering string. >+ * <p>see [MS-DOC], v20140721, 2.9.150</p> >+ * >+ * @return {@code 0}-terminated array, unless it is full >+ */ >+ public byte[] getLevelNumberingPlaceholderOffsets() { >+ return _lvlf.getRgbxchNums(); >+ } >+ > int read( final byte[] data, final int startOffset ) > { > int offset = startOffset; >Index: src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java >=================================================================== >--- src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java (revision 1676333) >+++ src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java (working copy) >@@ -23,6 +23,7 @@ > > import org.apache.poi.hwpf.HWPFDocument; > import org.apache.poi.hwpf.HWPFTestDataSamples; >+import org.apache.poi.hwpf.model.ListLevel; > > /** > * Tests for our handling of lists >@@ -207,4 +208,47 @@ > assertEquals(1, r.getParagraph(22).getIlvl()); > assertEquals(0, r.getParagraph(23).getIlvl()); > } >+ >+ public void testSpecificNumberedOrderedListFeatures() throws IOException { >+ HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Lists.doc"); >+ >+ Range r = doc.getRange(); >+ //these are in the numbered ordered list >+ //26 = OL 2 >+ //27 = OL 2.1 >+ //28 = OL 2.2 >+ //29 = OL 2.2.1 >+ for (int i = 26; i < 30; i++) { >+ Paragraph p = r.getParagraph(i); >+ assertTrue(p.isInList()); >+ HWPFList list = p.getList(); >+ ListLevel level = list.getLVL((char) p.getIlvl()); >+ assertFalse(level.isLegalNumbering()); >+ assertEquals(-1, level.getRestart()); >+ } >+ Paragraph p = r.getParagraph(26); >+ HWPFList list = p.getList(); >+ ListLevel level = list.getLVL((char) p.getIlvl()); >+ byte[] lvl = level.getLevelNumberingPlaceholderOffsets(); >+ >+ assertEquals((byte)1, lvl[0]); >+ assertEquals((byte)0, lvl[1]); >+ >+ p = r.getParagraph(27); >+ list = p.getList(); >+ level = list.getLVL((char) p.getIlvl()); >+ lvl = level.getLevelNumberingPlaceholderOffsets(); >+ assertEquals((byte)1, lvl[0]); >+ assertEquals((byte)3, lvl[1]); >+ >+ p = r.getParagraph(29); >+ list = p.getList(); >+ level = list.getLVL((char) p.getIlvl()); >+ lvl = level.getLevelNumberingPlaceholderOffsets(); >+ >+ assertEquals((byte)1, lvl[0]); >+ assertEquals((byte)3, lvl[1]); >+ assertEquals((byte)5, lvl[2]); >+ } >+ > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 56998
:
32034
| 32691