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 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);