diff options
author | Nick Burch <nick@apache.org> | 2015-08-09 13:06:40 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2015-08-09 13:06:40 +0000 |
commit | 4fefb2bcc94ceeb08a42e0402d6530eb261f6969 (patch) | |
tree | bef961531ae98e3ce136f96db9629b5bb0b3f85c | |
parent | f6e262c4fe8036bfc9d2f1fb4bbfa1c2f8beef23 (diff) | |
download | poi-4fefb2bcc94ceeb08a42e0402d6530eb261f6969.tar.gz poi-4fefb2bcc94ceeb08a42e0402d6530eb261f6969.zip |
Begin Themes+Normal colour tests
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1694887 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | src/ooxml/testcases/org/apache/poi/xssf/model/TestThemesTable.java | 61 |
1 files changed, 59 insertions, 2 deletions
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/model/TestThemesTable.java b/src/ooxml/testcases/org/apache/poi/xssf/model/TestThemesTable.java index fde748815a..d572aa623e 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/model/TestThemesTable.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/model/TestThemesTable.java @@ -144,11 +144,68 @@ public class TestThemesTable { /**
* Ensure that, for a file with themes, we can correctly
- * read both the themed and non-themed colours back
+ * read both the themed and non-themed colours back.
+ * Column A = Theme Foreground
+ * Column B = Theme Foreground
+ * Column C = Explicit Colour Foreground
+ * Column E = Explicit Colour Background, Black Foreground
+ * Column G = Conditional Formatting Backgrounds
+ * (Row 4 = White by Lt2)
*/
@Test
public void themedAndNonThemedColours() {
- // TODO Implement this using Theme2.xls{x}
+ XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook(testFileComplex);
+ XSSFSheet sheet = wb.getSheetAt(0);
+ XSSFCellStyle style;
+ XSSFColor color;
+
+ String[] names = {"Black","White","Grey","Blue","Red","Green"};
+ int[] themes = {1,0,2,3,4,5};
+ assertEquals(names.length, themes.length);
+
+ // Check the non-CF colours in Columns A, B, C and E
+ for (int rn=2; rn<8; rn++) {
+ int idx = rn-2;
+ XSSFRow row = sheet.getRow(rn);
+ assertNotNull("Missing row " + rn, row);
+
+ // Theme cells aren't quite in the same order...
+ XSSFCell themeCell = row.getCell(0);
+ if (idx == 1) themeCell = sheet.getRow(idx).getCell(0);
+ if (idx >= 2) themeCell = sheet.getRow(idx+1).getCell(0);
+
+ // Sanity check names
+ int themeIdx = themes[idx];
+ ThemeElement themeElem = ThemeElement.byId(themeIdx);
+ assertCellContents(themeElem.name, themeCell);
+ assertCellContents(names[idx], row.getCell(1));
+ assertCellContents(names[idx], row.getCell(2));
+ assertCellContents(names[idx], row.getCell(4));
+
+ // Check the colours
+ // A: Theme Based, Foreground
+ style = themeCell.getCellStyle();
+ color = style.getFont().getXSSFColor();
+ assertEquals(true, color.isThemed());
+ assertEquals(themeIdx, color.getTheme());
+ assertEquals(rgbExpected[themeIdx], Hex.encodeHexString(color.getRGB()));
+ // B: Theme Based, Foreground
+ style = row.getCell(1).getCellStyle();
+ color = style.getFont().getXSSFColor();
+ // TODO Fix this!
+ if (idx < 2) {
+ assertEquals(true, color.isThemed());
+ assertEquals(themeIdx, color.getTheme());
+ assertEquals(rgbExpected[themeIdx], Hex.encodeHexString(color.getRGB()));
+ }
+ }
+
+ // Check the CF colours
+ // TODO
+ }
+ private static void assertCellContents(String expected, XSSFCell cell) {
+ assertNotNull(cell);
+ assertEquals(expected.toLowerCase(), cell.getStringCellValue().toLowerCase());
}
@Test
|