Font sizes can vary slightly between machines, so use small ranges not absolute numbers when testing column autosizing

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@610481 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2008-01-09 17:47:00 +00:00
parent 400bfacc62
commit a4caea39b5

View File

@ -724,10 +724,20 @@ public class TestHSSFSheet
HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheet(sheetName); HSSFSheet sheet = wb.getSheet(sheetName);
// Can't use literal numbers for column sizes, as
// will come out with different values on different
// machines based on the fonts available.
// So, we use ranges
int minWithRow1And2 = 7169;
int maxWithRow1And2 = 7732;
int minWithRow1Only = 3024;
int maxWithRow1Only = 3292;
// autoSize the first column and check its size before the merged region (1,0,1,1) is set: // autoSize the first column and check its size before the merged region (1,0,1,1) is set:
// it has to be based on the 2nd row width // it has to be based on the 2nd row width
sheet.autoSizeColumn((short)0); sheet.autoSizeColumn((short)0);
assertEquals("Column autosized with only one row: wrong width", (short)7169, sheet.getColumnWidth((short)0)); assertTrue("Column autosized with only one row: wrong width", sheet.getColumnWidth((short)0) >= minWithRow1And2);
assertTrue("Column autosized with only one row: wrong width", sheet.getColumnWidth((short)0) <= maxWithRow1And2);
//create a region over the 2nd row and auto size the first column //create a region over the 2nd row and auto size the first column
sheet.addMergedRegion(new Region(1,(short)0,1,(short)1)); sheet.addMergedRegion(new Region(1,(short)0,1,(short)1));
@ -740,7 +750,8 @@ public class TestHSSFSheet
// because it is included in a merged region (Excel like behavior) // because it is included in a merged region (Excel like behavior)
HSSFWorkbook wb2 = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray())); HSSFWorkbook wb2 = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
HSSFSheet sheet2 = wb2.getSheet(sheetName); HSSFSheet sheet2 = wb2.getSheet(sheetName);
assertEquals((short)3024, sheet2.getColumnWidth((short)0)); assertTrue(sheet2.getColumnWidth((short)0) >= minWithRow1Only);
assertTrue(sheet2.getColumnWidth((short)0) <= maxWithRow1Only);
// remove the 2nd row merged region and check that the 2nd row value is used to the autoSizeColumn width // remove the 2nd row merged region and check that the 2nd row value is used to the autoSizeColumn width
sheet2.removeMergedRegion(1); sheet2.removeMergedRegion(1);
@ -750,7 +761,8 @@ public class TestHSSFSheet
out.close(); out.close();
HSSFWorkbook wb3 = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray())); HSSFWorkbook wb3 = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
HSSFSheet sheet3 = wb3.getSheet(sheetName); HSSFSheet sheet3 = wb3.getSheet(sheetName);
assertEquals((short)7169, sheet3.getColumnWidth((short)0)); assertTrue(sheet3.getColumnWidth((short)0) >= minWithRow1And2);
assertTrue(sheet3.getColumnWidth((short)0) <= maxWithRow1And2);
} }
public static void main(java.lang.String[] args) { public static void main(java.lang.String[] args) {