From 43b74b02539ff422a40ad09f148e2fff62b17236 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 29 Sep 2013 20:23:20 +0000 Subject: [PATCH] Apply patch from bug 55341 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1527397 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/ss/usermodel/CellStyle.java | 4 +- .../poi/xssf/usermodel/TestXSSFCellStyle.java | 130 ++++++++++++++++++ .../poi/hssf/usermodel/TestCellStyle.java | 52 ++++++- .../spreadsheet/55341_CellStyleBorder.xls | Bin 0 -> 28160 bytes 4 files changed, 180 insertions(+), 6 deletions(-) create mode 100644 test-data/spreadsheet/55341_CellStyleBorder.xls diff --git a/src/java/org/apache/poi/ss/usermodel/CellStyle.java b/src/java/org/apache/poi/ss/usermodel/CellStyle.java index 7b62c1ee8..3eed0604b 100644 --- a/src/java/org/apache/poi/ss/usermodel/CellStyle.java +++ b/src/java/org/apache/poi/ss/usermodel/CellStyle.java @@ -113,7 +113,7 @@ public interface CellStyle { * dot border */ - public final static short BORDER_HAIR = 0x4; + public final static short BORDER_HAIR = 0x7; /** * Thick border @@ -131,7 +131,7 @@ public interface CellStyle { * hair-line border */ - public final static short BORDER_DOTTED = 0x7; + public final static short BORDER_DOTTED = 0x4; /** * Medium dashed border 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 11b724f4a..303cba95e 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java @@ -229,6 +229,136 @@ public class TestXSSFCellStyle extends TestCase { assertFalse(ctBorder.isSetTop()); } + public void testGetSetBorderThin() { + cellStyle.setBorderTop(CellStyle.BORDER_THIN); + assertEquals(CellStyle.BORDER_THIN, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.THIN, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderMedium() { + cellStyle.setBorderTop(CellStyle.BORDER_MEDIUM); + assertEquals(CellStyle.BORDER_MEDIUM, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.MEDIUM, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderThick() { + cellStyle.setBorderTop(CellStyle.BORDER_THICK); + assertEquals(CellStyle.BORDER_THICK, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.THICK, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderHair() { + cellStyle.setBorderTop(CellStyle.BORDER_HAIR); + assertEquals(CellStyle.BORDER_HAIR, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.HAIR, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderDotted() { + cellStyle.setBorderTop(CellStyle.BORDER_DOTTED); + assertEquals(CellStyle.BORDER_DOTTED, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.DOTTED, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderDashed() { + cellStyle.setBorderTop(CellStyle.BORDER_DASHED); + assertEquals(CellStyle.BORDER_DASHED, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.DASHED, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderDashDot() { + cellStyle.setBorderTop(CellStyle.BORDER_DASH_DOT); + assertEquals(CellStyle.BORDER_DASH_DOT, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.DASH_DOT, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderDashDotDot() { + cellStyle.setBorderTop(CellStyle.BORDER_DASH_DOT_DOT); + assertEquals(CellStyle.BORDER_DASH_DOT_DOT, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.DASH_DOT_DOT, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderMediumDashDot() { + cellStyle.setBorderTop(CellStyle.BORDER_MEDIUM_DASH_DOT); + assertEquals(CellStyle.BORDER_MEDIUM_DASH_DOT, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.MEDIUM_DASH_DOT, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderMediumDashDotDot() { + cellStyle.setBorderTop(CellStyle.BORDER_MEDIUM_DASH_DOT_DOT); + assertEquals(CellStyle.BORDER_MEDIUM_DASH_DOT_DOT, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.MEDIUM_DASH_DOT_DOT, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderMediumDashed() { + cellStyle.setBorderTop(CellStyle.BORDER_MEDIUM_DASHED); + assertEquals(CellStyle.BORDER_MEDIUM_DASHED, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.MEDIUM_DASHED, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderSlantDashDot() { + cellStyle.setBorderTop(CellStyle.BORDER_SLANTED_DASH_DOT); + assertEquals(CellStyle.BORDER_SLANTED_DASH_DOT, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.SLANT_DASH_DOT, ctBorder.getTop().getStyle()); + } + + public void testGetSetBorderDouble() { + cellStyle.setBorderTop(CellStyle.BORDER_DOUBLE); + assertEquals(CellStyle.BORDER_DOUBLE, cellStyle.getBorderTop()); + int borderId = (int)cellStyle.getCoreXf().getBorderId(); + assertTrue(borderId > 0); + //check changes in the underlying xml bean + CTBorder ctBorder = stylesTable.getBorderAt(borderId).getCTBorder(); + assertEquals(STBorderStyle.DOUBLE, ctBorder.getTop().getStyle()); + } + public void testGetSetBottomBorderColor() { //defaults assertEquals(IndexedColors.BLACK.getIndex(), cellStyle.getBottomBorderColor()); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java b/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java index baaad8c42..2457032a6 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java @@ -17,16 +17,18 @@ package org.apache.poi.hssf.usermodel; -import junit.framework.TestCase; -import org.apache.poi.hssf.HSSFTestDataSamples; -import org.apache.poi.util.TempFile; - import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Calendar; import java.util.Date; +import junit.framework.TestCase; + +import org.apache.poi.hssf.HSSFTestDataSamples; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.util.TempFile; + /** * Class to test cell styling functionality * @@ -331,5 +333,47 @@ 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()); + } } diff --git a/test-data/spreadsheet/55341_CellStyleBorder.xls b/test-data/spreadsheet/55341_CellStyleBorder.xls new file mode 100644 index 0000000000000000000000000000000000000000..6de09bc32d885cd23eda0a39c26ba6a244211865 GIT binary patch literal 28160 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