bug 58775: add unit test to test for non-built-in data formats

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1721900 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Javen O'Neal 2015-12-28 12:10:12 +00:00
parent 8a7cd6308e
commit 9bdfcc4be6

View File

@ -19,6 +19,8 @@ package org.apache.poi.ss.usermodel;
import junit.framework.TestCase; import junit.framework.TestCase;
import java.io.IOException;
import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.ITestDataProvider;
/** /**
@ -33,6 +35,11 @@ public abstract class BaseTestDataFormat extends TestCase {
_testDataProvider = 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() { public final void testBuiltinFormats() {
Workbook wb = _testDataProvider.createWorkbook(); Workbook wb = _testDataProvider.createWorkbook();
@ -53,7 +60,7 @@ public abstract class BaseTestDataFormat extends TestCase {
//create a custom data format //create a custom data format
String customFmt = "#0.00 AM/PM"; String customFmt = "#0.00 AM/PM";
//check it is not in built-in formats //check it is not in built-in formats
assertEquals(-1, BuiltinFormats.getBuiltinFormat(customFmt)); assertNotBuiltInFormat(customFmt);
int customIdx = df.getFormat(customFmt); int customIdx = df.getFormat(customFmt);
//The first user-defined format starts at 164. //The first user-defined format starts at 164.
assertTrue(customIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX); assertTrue(customIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX);
@ -88,6 +95,27 @@ public abstract class BaseTestDataFormat extends TestCase {
assertEquals(poundFmt, dataFormat.getFormat(poundFmtIdx)); 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 abstract void test58532();
public void doTest58532Core(Workbook wb) { public void doTest58532Core(Workbook wb) {
Sheet s = wb.getSheetAt(0); Sheet s = wb.getSheetAt(0);