]> source.dussan.org Git - poi.git/commitdiff
extend tests
authorPJ Fanning <fanningpj@apache.org>
Mon, 5 Sep 2022 14:38:55 +0000 (14:38 +0000)
committerPJ Fanning <fanningpj@apache.org>
Mon, 5 Sep 2022 14:38:55 +0000 (14:38 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1903883 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestXSSFCellUtil.java

index d9aba70e5064a3333c3fb6b5e2bf45f0bd920d80..58b93c604713c07f7acb7af25d92fea4cf48f28c 100644 (file)
@@ -123,4 +123,86 @@ class TestXSSFCellUtil extends BaseTestCellUtil {
             assertEquals(FillPatternType.NO_FILL, cell.getCellStyle().getFillPattern());
         }
     }
+
+    @Test
+    public void testBug66052WithWorkaround() throws IOException, DecoderException {
+
+        try (Workbook workbook = new XSSFWorkbook()) {
+
+            final Sheet sheet = workbook.createSheet("Sheet");
+            final Row row = sheet.createRow(0);
+            final Cell cell = row.createCell(0);
+            final XSSFColor color = new XSSFColor(Hex.decodeHex("FFAAAA"));
+
+            assertNull(cell.getCellStyle().getFillForegroundColorColor());
+            assertNull(cell.getCellStyle().getFillBackgroundColorColor());
+
+            {
+                Map<String, Object> properties = new LinkedHashMap<>();
+
+                properties.put(CellUtil.FILL_FOREGROUND_COLOR_COLOR, color);
+                properties.put(CellUtil.FILL_BACKGROUND_COLOR_COLOR, null); // WORKAROUND
+                properties.put(CellUtil.FILL_PATTERN, FillPatternType.SOLID_FOREGROUND);
+
+                CellUtil.setCellStyleProperties(cell, properties);
+            }
+
+            assertNotNull(cell.getCellStyle().getFillForegroundColorColor());
+            assertNull(cell.getCellStyle().getFillBackgroundColorColor());
+
+            {
+                Map<String, Object> properties = new LinkedHashMap<>();
+
+                properties.put(CellUtil.FILL_FOREGROUND_COLOR_COLOR, null);
+                properties.put(CellUtil.FILL_BACKGROUND_COLOR_COLOR, null); // WORKAROUND
+                properties.put(CellUtil.FILL_PATTERN, FillPatternType.NO_FILL);
+
+                CellUtil.setCellStyleProperties(cell, properties);
+            }
+
+            assertNull(cell.getCellStyle().getFillForegroundColorColor());
+            assertNull(cell.getCellStyle().getFillBackgroundColorColor());
+        }
+    }
+
+    @Test
+    public void testBug66052WithoutWorkaround() throws IOException, DecoderException {
+
+        try (Workbook workbook = new XSSFWorkbook()) {
+
+            final Sheet sheet = workbook.createSheet("Sheet");
+            final Row row = sheet.createRow(0);
+            final Cell cell = row.createCell(0);
+            final XSSFColor color = new XSSFColor(Hex.decodeHex("FFAAAA"));
+
+            assertNull(cell.getCellStyle().getFillForegroundColorColor());
+            assertNull(cell.getCellStyle().getFillBackgroundColorColor());
+
+            {
+                Map<String, Object> properties = new LinkedHashMap<>();
+
+                properties.put(CellUtil.FILL_FOREGROUND_COLOR_COLOR, color);
+                properties.put(CellUtil.FILL_PATTERN, FillPatternType.SOLID_FOREGROUND);
+
+                CellUtil.setCellStyleProperties(cell, properties);
+            }
+
+            assertEquals(color, cell.getCellStyle().getFillForegroundColorColor());
+            assertEquals(IndexedColors.AUTOMATIC.getIndex(),
+                    ((XSSFColor) cell.getCellStyle().getFillBackgroundColorColor()).getIndex());
+
+            {
+                Map<String, Object> properties = new LinkedHashMap<>();
+
+                properties.put(CellUtil.FILL_FOREGROUND_COLOR_COLOR, null);
+                properties.put(CellUtil.FILL_PATTERN, FillPatternType.NO_FILL);
+
+                CellUtil.setCellStyleProperties(cell, properties);
+            }
+
+            assertNull(cell.getCellStyle().getFillForegroundColorColor());
+            assertEquals(IndexedColors.AUTOMATIC.getIndex(),
+                    ((XSSFColor) cell.getCellStyle().getFillBackgroundColorColor()).getIndex());
+        }
+    }
 }
\ No newline at end of file