Author: centic
Date: Sun Mar  8 20:17:19 2020
New Revision: 1874983

URL: http://svn.apache.org/viewvc?rev=1874983&view=rev
Log:
Work on bug 64038 and other bugs and add test for 62865

Modified:
    poi/trunk/src/java/org/apache/poi/ss/format/CellNumberFormatter.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java
    poi/trunk/src/testcases/org/apache/poi/ss/format/TestCellFormat.java

Modified: poi/trunk/src/java/org/apache/poi/ss/format/CellNumberFormatter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/format/CellNumberFormatter.java?rev=1874983&r1=1874982&r2=1874983&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/format/CellNumberFormatter.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/ss/format/CellNumberFormatter.java Sun 
Mar  8 20:17:19 2020
@@ -766,7 +766,6 @@ public class CellNumberFormatter extends
         }
 
         ListIterator<Special> it = 
numSpecials.listIterator(numSpecials.size());
-        boolean followWithGroupingSeparator = false;
         Special lastOutputIntegerDigit = null;
         int digit = 0;
         while (it.hasPrevious()) {
@@ -778,7 +777,7 @@ public class CellNumberFormatter extends
                 resultCh = '0';
             }
             Special s = it.previous();
-            followWithGroupingSeparator = showGroupingSeparator && digit > 0 
&& digit % 3 == 0;
+            boolean followWithGroupingSeparator = showGroupingSeparator && 
digit > 0 && digit % 3 == 0;
             boolean zeroStrip = false;
             if (resultCh != '0' || s.ch == '0' || s.ch == '?' || pos >= strip) 
{
                 zeroStrip = s.ch == '?' && pos < strip;
@@ -787,7 +786,6 @@ public class CellNumberFormatter extends
             }
             if (followWithGroupingSeparator) {
                 mods.add(insertMod(s, zeroStrip ? " " : groupingSeparator, 
CellNumberStringMod.AFTER));
-                followWithGroupingSeparator = false;
             }
             digit++;
             --pos;

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java?rev=1874983&r1=1874982&r2=1874983&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java 
Sun Mar  8 20:17:19 2020
@@ -420,7 +420,7 @@ public class XWPFParagraph implements IB
         }
         return null;
     }
-    
+
     /**
      * Indicates whether this paragraph should be kept on the same page as the 
next one.
      *
@@ -432,9 +432,9 @@ public class XWPFParagraph implements IB
         }
         return false;
     }
-    
+
     /**
-     * Sets this paragraph to be kept on the same page as the next one or not. 
+     * Sets this paragraph to be kept on the same page as the next one or not.
      *
      * @since POI 4.1.1
      */
@@ -1092,7 +1092,7 @@ public class XWPFParagraph implements IB
             return val[0].doubleValue() + (val[1].doubleValue() / 240L);
         }
         BigInteger[] val = 
spacing.getLine().divideAndRemainder(BigInteger.valueOf(20L));
-        return val[0].doubleValue() + (val[1].doubleValue() / 20L);        
+        return val[0].doubleValue() + (val[1].doubleValue() / 20L);
     }
 
     /**
@@ -1105,8 +1105,8 @@ public class XWPFParagraph implements IB
      *               font size. If AT_LEAST, then spacing value is in inches, 
and is the
      *               minimum size of the line. If the line height is taller, 
then the
      *               line expands to match. If EXACT, then spacing is the 
exact line
-     *               height. If the text is taller than the line height, then 
it is 
-     *               clipped at the top. 
+     *               height. If the text is taller than the line height, then 
it is
+     *               clipped at the top.
      */
     public void setSpacingBetween(double spacing, LineSpacingRule rule) {
         CTSpacing ctSp = getCTSpacing(true);
@@ -1117,7 +1117,7 @@ public class XWPFParagraph implements IB
         }
         ctSp.setLineRule(STLineSpacingRule.Enum.forInt(rule.getValue()));
     }
-    
+
     /**
      * Sets the spacing between lines in a paragraph
      *
@@ -1126,7 +1126,7 @@ public class XWPFParagraph implements IB
     public void setSpacingBetween(double spacing) {
         setSpacingBetween(spacing, LineSpacingRule.AUTO);
     }
-    
+
     /**
      * Specifies the indentation which shall be placed between the left text
      * margin for this paragraph and the left edge of that paragraph's content
@@ -1460,17 +1460,17 @@ public class XWPFParagraph implements IB
      * @since POI 4.1.1
      */
     public XWPFHyperlinkRun createHyperlinkRun(String uri) {
-        // Create a relationship ID for this link. 
+        // Create a relationship ID for this link.
         String rId = getPart().getPackagePart().addExternalRelationship(
                 uri, XWPFRelation.HYPERLINK.getRelation()
         ).getId();
-        
-        // Create the run. 
+
+        // Create the run.
         CTHyperlink ctHyperLink = getCTP().addNewHyperlink();
         ctHyperLink.setId(rId);
         ctHyperLink.addNewR();
-        
-        // Append this run to the paragraph. 
+
+        // Append this run to the paragraph.
         XWPFHyperlinkRun link = new XWPFHyperlinkRun(ctHyperLink, 
ctHyperLink.getRArray(0), this);
         runs.add(link);
         iruns.add(link);
@@ -1481,7 +1481,7 @@ public class XWPFParagraph implements IB
      * insert a new Run in RunArray
      *
      * @param pos The position at which the new run should be added.
-     * 
+     *
      * @return the inserted run or null if the given pos is out of bounds.
      */
     public XWPFRun insertNewRun(int pos) {
@@ -1537,7 +1537,7 @@ public class XWPFParagraph implements IB
             startChar = startPos.getChar();
         int beginRunPos = 0, candCharPos = 0;
         boolean newList = false;
-        
+
         CTR[] rArray = paragraph.getRArray();
         for (int runPos = startRun; runPos < rArray.length; runPos++) {
             int beginTextPos = 0, beginCharPos = 0, textPos = 0, charPos;
@@ -1555,7 +1555,7 @@ public class XWPFParagraph implements IB
                             } else {
                                 charPos = 0;
                             }
-    
+
                             for (; charPos < candidate.length(); charPos++) {
                                 if ((candidate.charAt(charPos) == 
searched.charAt(0)) && (candCharPos == 0)) {
                                     beginTextPos = textPos;

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java?rev=1874983&r1=1874982&r2=1874983&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
 (original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
 Sun Mar  8 20:17:19 2020
@@ -198,6 +198,8 @@ public final class TestXWPFDocument {
             XWPFHyperlinkRun h = 
p.createHyperlinkRun("https://poi.apache.org/";);
             h.setText("Apache POI");
 
+            assertEquals("rId7", h.getHyperlinkId());
+
             assertEquals("https://poi.apache.org/";, 
h.getHyperlink(doc).getURL());
             assertEquals(p.getRuns().size(), 1);
             assertEquals(p.getRuns().get(0), h);

Modified: 
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java?rev=1874983&r1=1874982&r2=1874983&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java 
Sun Mar  8 20:17:19 2020
@@ -109,7 +109,13 @@ public final class TestUnfixedBugs {
     }
 
     @Test
-    public void testDataFormattingWithQuestionMark() {
+    public void testBug62242() {
+        CellFormat cfUK  = CellFormat.getInstance("_ * #,##0.00_ ;_ * 
\\-#,##0.00_ ;_ * \"-\"??_ ;_ @_");
+        assertEquals("    -   ", cfUK.apply((double) 0).text);
+    }
+
+    @Test
+    public void testDataFormattingWithQuestionMarkBug62242() {
         // The question mark in the format should be replaced by blanks, but
         // this is currently not handled when producing the Java formatting and
         // so we end up with a trailing zero here
@@ -118,13 +124,16 @@ public final class TestUnfixedBugs {
     }
 
     @Test
-    public void testDataFormattingWithQuestionMarkAndPound() {
+    public void testDataFormattingWithQuestionMarkAndPoundBug62242() {
         char pound = '\u00A3';
 
         // The question mark in the format should be replaced by blanks, but
         // this is currently not handled when producing the Java formatting and
         // so we end up with a trailing zero here
         CellFormat cfUK  = CellFormat.getInstance("_-[$£-809]* \"-\"??_-");
-        assertEquals(" "+pound+"   -  ", cfUK.apply((double) 0).text);
+        assertEquals(" "+pound+"   -   ", cfUK.apply((double) 0).text);
+
+        cfUK  = CellFormat.getInstance("_-[$£-809]* \"-\"??_-a");
+        assertEquals(" "+pound+"   -   a", cfUK.apply((double) 0).text);
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/format/TestCellFormat.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/format/TestCellFormat.java?rev=1874983&r1=1874982&r2=1874983&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/format/TestCellFormat.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/format/TestCellFormat.java Sun 
Mar  8 20:17:19 2020
@@ -1007,4 +1007,10 @@ public class TestCellFormat {
         assertNotNull(instance);
         assertEquals("01/01/1970", instance.apply(new Date(12345)).text);
     }
+
+    @Test
+    public void testBug62865() {
+        CellFormat cf = CellFormat.getInstance("\"ca. \"0");
+        assertEquals("ca. 5", cf.apply((double) 5).text);
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to