]> source.dussan.org Git - poi.git/commitdiff
bug 58775: add unit test to test for non-built-in data formats
authorJaven O'Neal <onealj@apache.org>
Mon, 28 Dec 2015 12:10:12 +0000 (12:10 +0000)
committerJaven O'Neal <onealj@apache.org>
Mon, 28 Dec 2015 12:10:12 +0000 (12:10 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1721900 13f79535-47bb-0310-9956-ffa450edef68

src/testcases/org/apache/poi/ss/usermodel/BaseTestDataFormat.java

index 03a3631a37ad6a8cc426c56cece9c07bd505f6eb..9d238c9f93cbc1e00795bca9e0f959417deba22b 100644 (file)
@@ -19,6 +19,8 @@ package org.apache.poi.ss.usermodel;
 
 import junit.framework.TestCase;
 
+import java.io.IOException;
+
 import org.apache.poi.ss.ITestDataProvider;
 
 /**
@@ -32,6 +34,11 @@ public abstract class BaseTestDataFormat extends TestCase {
     protected BaseTestDataFormat(ITestDataProvider testDataProvider) {
         _testDataProvider = testDataProvider;
     }
+    
+    public void assertNotBuiltInFormat(String customFmt) {
+        //check it is not in built-in formats
+        assertEquals(-1, BuiltinFormats.getBuiltinFormat(customFmt));
+    }
 
     public final void testBuiltinFormats() {
         Workbook wb = _testDataProvider.createWorkbook();
@@ -53,7 +60,7 @@ public abstract class BaseTestDataFormat extends TestCase {
         //create a custom data format
         String customFmt = "#0.00 AM/PM";
         //check it is not in built-in formats
-        assertEquals(-1, BuiltinFormats.getBuiltinFormat(customFmt));
+        assertNotBuiltInFormat(customFmt);
         int customIdx = df.getFormat(customFmt);
         //The first user-defined format starts at 164.
         assertTrue(customIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX);
@@ -88,6 +95,27 @@ public abstract class BaseTestDataFormat extends TestCase {
         assertEquals(poundFmt, dataFormat.getFormat(poundFmtIdx));
     }
     
+    public void testReadbackFormat() throws IOException {
+        readbackFormat("built-in format", "0.00");
+        readbackFormat("overridden built-in format", poundFmt);
+        
+        String customFormat = "#0.00 AM/PM";
+        assertNotBuiltInFormat(customFormat);
+        readbackFormat("custom format", customFormat);
+    }
+    
+    private void readbackFormat(String msg, String fmt) throws IOException {
+        Workbook wb = _testDataProvider.createWorkbook();
+        try {
+            DataFormat dataFormat = wb.createDataFormat();
+            short fmtIdx = dataFormat.getFormat(fmt);
+            String readbackFmt = dataFormat.getFormat(fmtIdx);
+            assertEquals(msg, fmt, readbackFmt);
+        } finally {
+            wb.close();
+        }
+    }
+    
     public abstract void test58532();
     public void doTest58532Core(Workbook wb) {
         Sheet s = wb.getSheetAt(0);