From b2a64e7f7c83b5de7f6b44138aad59f4a2d7d854 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 7 Nov 2013 22:39:11 +0000 Subject: [PATCH] Unit tests for Shrink To Fit cell style support (#55661) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1539850 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFCellStyle.java | 33 ++++- .../poi/hssf/usermodel/TestCellStyle.java | 113 +++++++++++------- test-data/spreadsheet/ShrinkToFit.xls | Bin 0 -> 25088 bytes test-data/spreadsheet/ShrinkToFit.xlsx | Bin 0 -> 6145 bytes 4 files changed, 102 insertions(+), 44 deletions(-) create mode 100644 test-data/spreadsheet/ShrinkToFit.xls create mode 100644 test-data/spreadsheet/ShrinkToFit.xlsx diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java index 045d10bb31..19e9a65a32 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java @@ -24,6 +24,8 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.StylesTable; @@ -40,9 +42,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPatternType; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment; - public class TestXSSFCellStyle extends TestCase { - private StylesTable stylesTable; private CTBorder ctBorderA; private CTFill ctFill; @@ -850,4 +850,33 @@ public class TestXSSFCellStyle extends TestCase { assertNull(style.getStyleXf()); } + public void testShrinkToFit() { + // Existing file + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("ShrinkToFit.xlsx"); + Sheet s = wb.getSheetAt(0); + Row r = s.getRow(0); + CellStyle cs = r.getCell(0).getCellStyle(); + + assertEquals(true, cs.getShrinkToFit()); + + // New file + XSSFWorkbook wbOrig = new XSSFWorkbook(); + s = wbOrig.createSheet(); + r = s.createRow(0); + + cs = wbOrig.createCellStyle(); + cs.setShrinkToFit(false); + r.createCell(0).setCellStyle(cs); + + cs = wbOrig.createCellStyle(); + cs.setShrinkToFit(true); + r.createCell(1).setCellStyle(cs); + + // Write out, read, and check + wb = XSSFTestDataSamples.writeOutAndReadBack(wbOrig); + s = wb.getSheetAt(0); + r = s.getRow(0); + assertEquals(false, r.getCell(0).getCellStyle().getShrinkToFit()); + assertEquals(true, r.getCell(1).getCellStyle().getShrinkToFit()); + } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java b/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java index 2457032a66..e57191b646 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java @@ -333,47 +333,76 @@ public final class TestCellStyle extends TestCase { c4.setCellStyle(cs2); assertEquals("style1", c4.getCellStyle().getParentStyle().getUserStyleName()); } - - public void testGetSetBorderHair() { - HSSFWorkbook wb = openSample("55341_CellStyleBorder.xls"); - HSSFSheet s = wb.getSheetAt(0); - HSSFCellStyle cs; - - cs = s.getRow(0).getCell(0).getCellStyle(); - assertEquals(CellStyle.BORDER_HAIR, cs.getBorderRight()); - - cs = s.getRow(1).getCell(1).getCellStyle(); - assertEquals(CellStyle.BORDER_DOTTED, cs.getBorderRight()); - - cs = s.getRow(2).getCell(2).getCellStyle(); - assertEquals(CellStyle.BORDER_DASH_DOT_DOT, cs.getBorderRight()); - - cs = s.getRow(3).getCell(3).getCellStyle(); - assertEquals(CellStyle.BORDER_DASHED, cs.getBorderRight()); - - cs = s.getRow(4).getCell(4).getCellStyle(); - assertEquals(CellStyle.BORDER_THIN, cs.getBorderRight()); - - cs = s.getRow(5).getCell(5).getCellStyle(); - assertEquals(CellStyle.BORDER_MEDIUM_DASH_DOT_DOT, cs.getBorderRight()); - - cs = s.getRow(6).getCell(6).getCellStyle(); - assertEquals(CellStyle.BORDER_SLANTED_DASH_DOT, cs.getBorderRight()); - - cs = s.getRow(7).getCell(7).getCellStyle(); - assertEquals(CellStyle.BORDER_MEDIUM_DASH_DOT, cs.getBorderRight()); - - cs = s.getRow(8).getCell(8).getCellStyle(); - assertEquals(CellStyle.BORDER_MEDIUM_DASHED, cs.getBorderRight()); - - cs = s.getRow(9).getCell(9).getCellStyle(); - assertEquals(CellStyle.BORDER_MEDIUM, cs.getBorderRight()); - - cs = s.getRow(10).getCell(10).getCellStyle(); - assertEquals(CellStyle.BORDER_THICK, cs.getBorderRight()); - - cs = s.getRow(11).getCell(11).getCellStyle(); - assertEquals(CellStyle.BORDER_DOUBLE, cs.getBorderRight()); - } + + public void testGetSetBorderHair() { + HSSFWorkbook wb = openSample("55341_CellStyleBorder.xls"); + HSSFSheet s = wb.getSheetAt(0); + HSSFCellStyle cs; + cs = s.getRow(0).getCell(0).getCellStyle(); + assertEquals(CellStyle.BORDER_HAIR, cs.getBorderRight()); + + cs = s.getRow(1).getCell(1).getCellStyle(); + assertEquals(CellStyle.BORDER_DOTTED, cs.getBorderRight()); + + cs = s.getRow(2).getCell(2).getCellStyle(); + assertEquals(CellStyle.BORDER_DASH_DOT_DOT, cs.getBorderRight()); + + cs = s.getRow(3).getCell(3).getCellStyle(); + assertEquals(CellStyle.BORDER_DASHED, cs.getBorderRight()); + + cs = s.getRow(4).getCell(4).getCellStyle(); + assertEquals(CellStyle.BORDER_THIN, cs.getBorderRight()); + + cs = s.getRow(5).getCell(5).getCellStyle(); + assertEquals(CellStyle.BORDER_MEDIUM_DASH_DOT_DOT, cs.getBorderRight()); + + cs = s.getRow(6).getCell(6).getCellStyle(); + assertEquals(CellStyle.BORDER_SLANTED_DASH_DOT, cs.getBorderRight()); + + cs = s.getRow(7).getCell(7).getCellStyle(); + assertEquals(CellStyle.BORDER_MEDIUM_DASH_DOT, cs.getBorderRight()); + + cs = s.getRow(8).getCell(8).getCellStyle(); + assertEquals(CellStyle.BORDER_MEDIUM_DASHED, cs.getBorderRight()); + + cs = s.getRow(9).getCell(9).getCellStyle(); + assertEquals(CellStyle.BORDER_MEDIUM, cs.getBorderRight()); + + cs = s.getRow(10).getCell(10).getCellStyle(); + assertEquals(CellStyle.BORDER_THICK, cs.getBorderRight()); + + cs = s.getRow(11).getCell(11).getCellStyle(); + assertEquals(CellStyle.BORDER_DOUBLE, cs.getBorderRight()); + } + + public void testShrinkToFit() { + // Existing file + HSSFWorkbook wb = openSample("ShrinkToFit.xls"); + HSSFSheet s = wb.getSheetAt(0); + HSSFRow r = s.getRow(0); + HSSFCellStyle cs = r.getCell(0).getCellStyle(); + + assertEquals(true, cs.getShrinkToFit()); + + // New file + HSSFWorkbook wbOrig = new HSSFWorkbook(); + s = wbOrig.createSheet(); + r = s.createRow(0); + + cs = wbOrig.createCellStyle(); + cs.setShrinkToFit(false); + r.createCell(0).setCellStyle(cs); + + cs = wbOrig.createCellStyle(); + cs.setShrinkToFit(true); + r.createCell(1).setCellStyle(cs); + + // Write out, read, and check + wb = HSSFTestDataSamples.writeOutAndReadBack(wbOrig); + s = wb.getSheetAt(0); + r = s.getRow(0); + assertEquals(false, r.getCell(0).getCellStyle().getShrinkToFit()); + assertEquals(true, r.getCell(1).getCellStyle().getShrinkToFit()); + } } diff --git a/test-data/spreadsheet/ShrinkToFit.xls b/test-data/spreadsheet/ShrinkToFit.xls new file mode 100644 index 0000000000000000000000000000000000000000..1228a9a872366313ac2b19d10cc3e07afd43b97b GIT binary patch literal 25088 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 PAvb=Oe}eYUG0^`XN$_hz literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/ShrinkToFit.xlsx b/test-data/spreadsheet/ShrinkToFit.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6f2f455eb4bf3d1a9d2a817c2406a190d711e173 GIT binary patch literal 6145 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