]> source.dussan.org Git - poi.git/commitdiff
bug 59208: correctly understand val="1" for isBold, isItalic, etc
authorJaven O'Neal <onealj@apache.org>
Tue, 22 Mar 2016 04:20:45 +0000 (04:20 +0000)
committerJaven O'Neal <onealj@apache.org>
Tue, 22 Mar 2016 04:20:45 +0000 (04:20 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1736126 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java

index 4cdb2401b3dd6f058e23cee5a22c51dbb2202b89..3bbcac704f70fc80486ab84b1a5d94408b1107ad 100644 (file)
@@ -237,14 +237,15 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
     /**
      * For isBold, isItalic etc
      */
-    private boolean isCTOnOff(CTOnOff onoff) {
+    private static boolean isCTOnOff(CTOnOff onoff) {
         if (!onoff.isSetVal())
             return true;
-        if (onoff.getVal() == STOnOff.ON)
-            return true;
-        if (onoff.getVal() == STOnOff.TRUE)
-            return true;
-        return false;
+        final STOnOff.Enum val = onoff.getVal();
+        return (
+            (STOnOff.TRUE == val) ||
+            (STOnOff.X_1 == val) ||
+            (STOnOff.ON == val)
+        );
     }
 
     /**
index 0b28c86d53e5a9c247e0a596456461108cb92fbd..1e45014c0539d0f3599fd06f1c75e4d7d52723fd 100644 (file)
@@ -66,6 +66,37 @@ public class TestXWPFRun extends TestCase {
         //fail("Position wrong");
     }
 
+    /*
+     * bug 59208
+     * Purpose: test all valid boolean-like values
+     * exercise isCTOnOff(CTOnOff) through all valid permutations
+     */
+    public void testCTOnOff() {
+        CTRPr rpr = ctRun.addNewRPr();
+        CTOnOff bold = rpr.addNewB();        
+        XWPFRun run = new XWPFRun(ctRun, p);
+
+        // True values: "true", "1", "on"
+        bold.setVal(STOnOff.TRUE);
+        assertEquals(true, run.isBold());    
+
+        bold.setVal(STOnOff.X_1);
+        assertEquals(true, run.isBold());
+
+        bold.setVal(STOnOff.ON);
+        assertEquals(true, run.isBold());
+
+        // False values: "false", "0", "off"
+        bold.setVal(STOnOff.FALSE);
+        assertEquals(false, run.isBold());
+
+        bold.setVal(STOnOff.X_0);
+        assertEquals(false, run.isBold());
+
+        bold.setVal(STOnOff.OFF);
+        assertEquals(false, run.isBold());
+    }
+
     public void testSetGetBold() {
         CTRPr rpr = ctRun.addNewRPr();
         rpr.addNewB().setVal(STOnOff.TRUE);
@@ -74,6 +105,8 @@ public class TestXWPFRun extends TestCase {
         assertEquals(true, run.isBold());
 
         run.setBold(false);
+        // Implementation detail: POI natively prefers <w:b w:val="false"/>,
+        // but should correctly read val="0" and val="off"
         assertEquals(STOnOff.FALSE, rpr.getB().getVal());
     }