git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1854718 13f79535-47bb-0310-9956-ffa450edef68tags/REL_4_1_0
@@ -34,8 +34,6 @@ import java.nio.file.Files; | |||
* Tests for {@link XSSFBEventBasedExcelExtractor} | |||
*/ | |||
public class TestXSSFBEventBasedExcelExtractor { | |||
protected XSSFEventBasedExcelExtractor getExtractor(String sampleName) throws Exception { | |||
return new XSSFBEventBasedExcelExtractor(XSSFTestDataSamples. | |||
openSamplePackage(sampleName)); | |||
@@ -47,88 +45,83 @@ public class TestXSSFBEventBasedExcelExtractor { | |||
@Test | |||
public void testGetSimpleText() throws Exception { | |||
// a very simple file | |||
XSSFEventBasedExcelExtractor extractor = getExtractor("sample.xlsb"); | |||
extractor.setIncludeCellComments(true); | |||
extractor.getText(); | |||
String text = extractor.getText(); | |||
assertTrue(text.length() > 0); | |||
// Check sheet names | |||
assertStartsWith(text, "Sheet1"); | |||
assertEndsWith(text, "Sheet3\n"); | |||
// Now without, will have text | |||
extractor.setIncludeSheetNames(false); | |||
text = extractor.getText(); | |||
String CHUNK1 = | |||
"Lorem\t111\n" + | |||
"ipsum\t222\n" + | |||
"dolor\t333\n" + | |||
"sit\t444\n" + | |||
"amet\t555\n" + | |||
"consectetuer\t666\n" + | |||
"adipiscing\t777\n" + | |||
"elit\t888\n" + | |||
"Nunc\t999\n"; | |||
String CHUNK2 = | |||
"The quick brown fox jumps over the lazy dog\n" + | |||
"hello, xssf hello, xssf\n" + | |||
"hello, xssf hello, xssf\n" + | |||
"hello, xssf hello, xssf\n" + | |||
"hello, xssf hello, xssf\n"; | |||
assertEquals( | |||
CHUNK1 + | |||
"at\t4995\n" + | |||
CHUNK2 | |||
, text); | |||
try (XSSFEventBasedExcelExtractor extractor = getExtractor("sample.xlsb")) { | |||
extractor.setIncludeCellComments(true); | |||
extractor.getText(); | |||
String text = extractor.getText(); | |||
assertTrue(text.length() > 0); | |||
// Check sheet names | |||
assertStartsWith(text, "Sheet1"); | |||
assertEndsWith(text, "Sheet3\n"); | |||
// Now without, will have text | |||
extractor.setIncludeSheetNames(false); | |||
text = extractor.getText(); | |||
String CHUNK1 = | |||
"Lorem\t111\n" + | |||
"ipsum\t222\n" + | |||
"dolor\t333\n" + | |||
"sit\t444\n" + | |||
"amet\t555\n" + | |||
"consectetuer\t666\n" + | |||
"adipiscing\t777\n" + | |||
"elit\t888\n" + | |||
"Nunc\t999\n"; | |||
String CHUNK2 = | |||
"The quick brown fox jumps over the lazy dog\n" + | |||
"hello, xssf hello, xssf\n" + | |||
"hello, xssf hello, xssf\n" + | |||
"hello, xssf hello, xssf\n" + | |||
"hello, xssf hello, xssf\n"; | |||
assertEquals( | |||
CHUNK1 + | |||
"at\t4995\n" + | |||
CHUNK2 | |||
, text); | |||
} | |||
} | |||
/** | |||
* Test text extraction from text box using getShapes() | |||
* | |||
* @throws Exception | |||
*/ | |||
@Test | |||
public void testShapes() throws Exception { | |||
XSSFEventBasedExcelExtractor ooxmlExtractor = getExtractor("WithTextBox.xlsb"); | |||
try { | |||
try (XSSFEventBasedExcelExtractor ooxmlExtractor = getExtractor("WithTextBox.xlsb")) { | |||
String text = ooxmlExtractor.getText(); | |||
assertContains(text, "Line 1"); | |||
assertContains(text, "Line 2"); | |||
assertContains(text, "Line 3"); | |||
} finally { | |||
ooxmlExtractor.close(); | |||
} | |||
} | |||
@Test | |||
public void testBeta() throws Exception { | |||
XSSFEventBasedExcelExtractor extractor = getExtractor("Simple.xlsb"); | |||
extractor.setIncludeCellComments(true); | |||
String text = extractor.getText(); | |||
assertContains(text, | |||
"This is an example spreadsheet created with Microsoft Excel 2007 Beta 2."); | |||
try (XSSFEventBasedExcelExtractor extractor = getExtractor("Simple.xlsb")) { | |||
extractor.setIncludeCellComments(true); | |||
String text = extractor.getText(); | |||
assertContains(text, | |||
"This is an example spreadsheet created with Microsoft Excel 2007 Beta 2."); | |||
} | |||
} | |||
@Test | |||
public void test62815() throws Exception { | |||
//test file based on http://oss.sheetjs.com/test_files/RkNumber.xlsb | |||
XSSFEventBasedExcelExtractor extractor = getExtractor("62815.xlsb"); | |||
extractor.setIncludeCellComments(true); | |||
String[] rows = extractor.getText().split("[\r\n]+"); | |||
assertEquals(283, rows.length); | |||
BufferedReader reader = Files.newBufferedReader(XSSFTestDataSamples.getSampleFile("62815.xlsb.txt").toPath(), | |||
StandardCharsets.UTF_8); | |||
String line = reader.readLine(); | |||
for (int i = 0; i < rows.length; i++) { | |||
assertEquals(line, rows[i]); | |||
line = reader.readLine(); | |||
while (line != null && line.startsWith("#")) { | |||
try (XSSFEventBasedExcelExtractor extractor = getExtractor("62815.xlsb")) { | |||
extractor.setIncludeCellComments(true); | |||
String[] rows = extractor.getText().split("[\r\n]+"); | |||
assertEquals(283, rows.length); | |||
BufferedReader reader = Files.newBufferedReader(XSSFTestDataSamples.getSampleFile("62815.xlsb.txt").toPath(), | |||
StandardCharsets.UTF_8); | |||
String line = reader.readLine(); | |||
for (String row : rows) { | |||
assertEquals(line, row); | |||
line = reader.readLine(); | |||
while (line != null && line.startsWith("#")) { | |||
line = reader.readLine(); | |||
} | |||
} | |||
} | |||
} |
@@ -31,35 +31,36 @@ import org.apache.poi.POIDataSamples; | |||
public class TestLoadSaveXSSF extends TestCase { | |||
private static final POIDataSamples _ssSampels = POIDataSamples.getSpreadSheetInstance(); | |||
private static final POIDataSamples _ssSamples = POIDataSamples.getSpreadSheetInstance(); | |||
public void testLoadSample() throws Exception { | |||
XSSFWorkbook workbook = new XSSFWorkbook(_ssSampels.openResourceAsStream("sample.xlsx")); | |||
assertEquals(3, workbook.getNumberOfSheets()); | |||
assertEquals("Sheet1", workbook.getSheetName(0)); | |||
Sheet sheet = workbook.getSheetAt(0); | |||
Row row = sheet.getRow(0); | |||
Cell cell = row.getCell((short) 1); | |||
assertNotNull(cell); | |||
assertEquals(111.0, cell.getNumericCellValue(), 0.0); | |||
cell = row.getCell((short) 0); | |||
assertEquals("Lorem", cell.getRichStringCellValue().getString()); | |||
try (XSSFWorkbook workbook = new XSSFWorkbook(_ssSamples.openResourceAsStream("sample.xlsx"))) { | |||
assertEquals(3, workbook.getNumberOfSheets()); | |||
assertEquals("Sheet1", workbook.getSheetName(0)); | |||
Sheet sheet = workbook.getSheetAt(0); | |||
Row row = sheet.getRow(0); | |||
Cell cell = row.getCell((short) 1); | |||
assertNotNull(cell); | |||
assertEquals(111.0, cell.getNumericCellValue(), 0.0); | |||
cell = row.getCell((short) 0); | |||
assertEquals("Lorem", cell.getRichStringCellValue().getString()); | |||
} | |||
} | |||
// TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successful. | |||
public void testLoadStyles() throws Exception { | |||
XSSFWorkbook workbook = new XSSFWorkbook(_ssSampels.openResourceAsStream("styles.xlsx")); | |||
Sheet sheet = workbook.getSheetAt(0); | |||
Row row = sheet.getRow(0); | |||
Cell cell = row.getCell((short) 0); | |||
CellStyle style = cell.getCellStyle(); | |||
// assertNotNull(style); | |||
try (XSSFWorkbook workbook = new XSSFWorkbook(_ssSamples.openResourceAsStream("styles.xlsx"))) { | |||
Sheet sheet = workbook.getSheetAt(0); | |||
Row row = sheet.getRow(0); | |||
Cell cell = row.getCell((short) 0); | |||
CellStyle style = cell.getCellStyle(); | |||
assertNotNull(style); | |||
} | |||
} | |||
// TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successful. | |||
public void testLoadPictures() throws Exception { | |||
XSSFWorkbook workbook = new XSSFWorkbook(_ssSampels.openResourceAsStream("picture.xlsx")); | |||
List<XSSFPictureData> pictures = workbook.getAllPictures(); | |||
assertEquals(1, pictures.size()); | |||
try (XSSFWorkbook workbook = new XSSFWorkbook(_ssSamples.openResourceAsStream("picture.xlsx"))) { | |||
List<XSSFPictureData> pictures = workbook.getAllPictures(); | |||
assertEquals(1, pictures.size()); | |||
} | |||
} | |||
} |
@@ -26,37 +26,37 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCalcCell; | |||
import junit.framework.TestCase; | |||
import java.io.IOException; | |||
public final class TestCalculationChain extends TestCase { | |||
public void test46535() { | |||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("46535.xlsx"); | |||
CalculationChain chain = wb.getCalculationChain(); | |||
//the bean holding the reference to the formula to be deleted | |||
CTCalcCell c = chain.getCTCalcChain().getCArray(0); | |||
int cnt = chain.getCTCalcChain().sizeOfCArray(); | |||
assertEquals(10, c.getI()); | |||
assertEquals("E1", c.getR()); | |||
XSSFSheet sheet = wb.getSheet("Test"); | |||
XSSFCell cell = sheet.getRow(0).getCell(4); | |||
assertEquals(CellType.FORMULA, cell.getCellType()); | |||
cell.setCellFormula(null); | |||
//the count of items is less by one | |||
c = chain.getCTCalcChain().getCArray(0); | |||
int cnt2 = chain.getCTCalcChain().sizeOfCArray(); | |||
assertEquals(cnt - 1, cnt2); | |||
//the first item in the calculation chain is the former second one | |||
assertEquals(10, c.getI()); | |||
assertEquals("C1", c.getR()); | |||
assertEquals(CellType.STRING, cell.getCellType()); | |||
cell.setCellValue("ABC"); | |||
assertEquals(CellType.STRING, cell.getCellType()); | |||
public void test46535() throws IOException { | |||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("46535.xlsx")) { | |||
CalculationChain chain = wb.getCalculationChain(); | |||
//the bean holding the reference to the formula to be deleted | |||
CTCalcCell c = chain.getCTCalcChain().getCArray(0); | |||
int cnt = chain.getCTCalcChain().sizeOfCArray(); | |||
assertEquals(10, c.getI()); | |||
assertEquals("E1", c.getR()); | |||
XSSFSheet sheet = wb.getSheet("Test"); | |||
XSSFCell cell = sheet.getRow(0).getCell(4); | |||
assertEquals(CellType.FORMULA, cell.getCellType()); | |||
cell.setCellFormula(null); | |||
//the count of items is less by one | |||
c = chain.getCTCalcChain().getCArray(0); | |||
int cnt2 = chain.getCTCalcChain().sizeOfCArray(); | |||
assertEquals(cnt - 1, cnt2); | |||
//the first item in the calculation chain is the former second one | |||
assertEquals(10, c.getI()); | |||
assertEquals("C1", c.getR()); | |||
assertEquals(CellType.STRING, cell.getCellType()); | |||
cell.setCellValue("ABC"); | |||
assertEquals(CellType.STRING, cell.getCellType()); | |||
} | |||
} | |||
} |
@@ -54,7 +54,7 @@ public class TestCommentsTable { | |||
private static final String TEST_AUTHOR = "test author"; | |||
@Test | |||
public void findAuthor() throws Exception { | |||
public void findAuthor() { | |||
CommentsTable sheetComments = new CommentsTable(); | |||
assertEquals(1, sheetComments.getNumberOfAuthors()); | |||
assertEquals(0, sheetComments.findAuthor("")); | |||
@@ -68,7 +68,7 @@ public class TestCommentsTable { | |||
} | |||
@Test | |||
public void getCellComment() throws Exception { | |||
public void getCellComment() { | |||
CommentsTable sheetComments = new CommentsTable(); | |||
CTComments comments = sheetComments.getCTComments(); | |||
@@ -94,123 +94,126 @@ public class TestCommentsTable { | |||
@Test | |||
public void existing() { | |||
Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithVariousData.xlsx"); | |||
Sheet sheet1 = workbook.getSheetAt(0); | |||
Sheet sheet2 = workbook.getSheetAt(1); | |||
assertTrue( ((XSSFSheet)sheet1).hasComments() ); | |||
assertFalse( ((XSSFSheet)sheet2).hasComments() ); | |||
// Comments should be in C5 and C7 | |||
Row r5 = sheet1.getRow(4); | |||
Row r7 = sheet1.getRow(6); | |||
assertNotNull( r5.getCell(2).getCellComment() ); | |||
assertNotNull( r7.getCell(2).getCellComment() ); | |||
// Check they have what we expect | |||
// TODO: Rich text formatting | |||
Comment cc5 = r5.getCell(2).getCellComment(); | |||
Comment cc7 = r7.getCell(2).getCellComment(); | |||
assertEquals("Nick Burch", cc5.getAuthor()); | |||
assertEquals("Nick Burch:\nThis is a comment", cc5.getString().getString()); | |||
assertEquals(4, cc5.getRow()); | |||
assertEquals(2, cc5.getColumn()); | |||
assertEquals("Nick Burch", cc7.getAuthor()); | |||
assertEquals("Nick Burch:\nComment #1\n", cc7.getString().getString()); | |||
assertEquals(6, cc7.getRow()); | |||
assertEquals(2, cc7.getColumn()); | |||
public void existing() throws IOException { | |||
try (Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithVariousData.xlsx")) { | |||
Sheet sheet1 = workbook.getSheetAt(0); | |||
Sheet sheet2 = workbook.getSheetAt(1); | |||
assertTrue(((XSSFSheet) sheet1).hasComments()); | |||
assertFalse(((XSSFSheet) sheet2).hasComments()); | |||
// Comments should be in C5 and C7 | |||
Row r5 = sheet1.getRow(4); | |||
Row r7 = sheet1.getRow(6); | |||
assertNotNull(r5.getCell(2).getCellComment()); | |||
assertNotNull(r7.getCell(2).getCellComment()); | |||
// Check they have what we expect | |||
// TODO: Rich text formatting | |||
Comment cc5 = r5.getCell(2).getCellComment(); | |||
Comment cc7 = r7.getCell(2).getCellComment(); | |||
assertEquals("Nick Burch", cc5.getAuthor()); | |||
assertEquals("Nick Burch:\nThis is a comment", cc5.getString().getString()); | |||
assertEquals(4, cc5.getRow()); | |||
assertEquals(2, cc5.getColumn()); | |||
assertEquals("Nick Burch", cc7.getAuthor()); | |||
assertEquals("Nick Burch:\nComment #1\n", cc7.getString().getString()); | |||
assertEquals(6, cc7.getRow()); | |||
assertEquals(2, cc7.getColumn()); | |||
} | |||
} | |||
@Test | |||
public void writeRead() { | |||
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithVariousData.xlsx"); | |||
XSSFSheet sheet1 = workbook.getSheetAt(0); | |||
XSSFSheet sheet2 = workbook.getSheetAt(1); | |||
assertTrue( sheet1.hasComments() ); | |||
assertFalse( sheet2.hasComments() ); | |||
// Change on comment on sheet 1, and add another into | |||
// sheet 2 | |||
Row r5 = sheet1.getRow(4); | |||
Comment cc5 = r5.getCell(2).getCellComment(); | |||
cc5.setAuthor("Apache POI"); | |||
cc5.setString(new XSSFRichTextString("Hello!")); | |||
Row r2s2 = sheet2.createRow(2); | |||
Cell c1r2s2 = r2s2.createCell(1); | |||
assertNull(c1r2s2.getCellComment()); | |||
Drawing<?> dg = sheet2.createDrawingPatriarch(); | |||
Comment cc2 = dg.createCellComment(new XSSFClientAnchor()); | |||
cc2.setAuthor("Also POI"); | |||
cc2.setString(new XSSFRichTextString("A new comment")); | |||
c1r2s2.setCellComment(cc2); | |||
// Save, and re-load the file | |||
workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook); | |||
// Check we still have comments where we should do | |||
sheet1 = workbook.getSheetAt(0); | |||
sheet2 = workbook.getSheetAt(1); | |||
assertNotNull(sheet1.getRow(4).getCell(2).getCellComment()); | |||
assertNotNull(sheet1.getRow(6).getCell(2).getCellComment()); | |||
assertNotNull(sheet2.getRow(2).getCell(1).getCellComment()); | |||
// And check they still have the contents they should do | |||
assertEquals("Apache POI", | |||
sheet1.getRow(4).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Nick Burch", | |||
sheet1.getRow(6).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Also POI", | |||
sheet2.getRow(2).getCell(1).getCellComment().getAuthor()); | |||
assertEquals("Hello!", | |||
sheet1.getRow(4).getCell(2).getCellComment().getString().getString()); | |||
public void writeRead() throws IOException { | |||
try (XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithVariousData.xlsx")) { | |||
XSSFSheet sheet1 = workbook.getSheetAt(0); | |||
XSSFSheet sheet2 = workbook.getSheetAt(1); | |||
assertTrue(sheet1.hasComments()); | |||
assertFalse(sheet2.hasComments()); | |||
// Change on comment on sheet 1, and add another into | |||
// sheet 2 | |||
Row r5 = sheet1.getRow(4); | |||
Comment cc5 = r5.getCell(2).getCellComment(); | |||
cc5.setAuthor("Apache POI"); | |||
cc5.setString(new XSSFRichTextString("Hello!")); | |||
Row r2s2 = sheet2.createRow(2); | |||
Cell c1r2s2 = r2s2.createCell(1); | |||
assertNull(c1r2s2.getCellComment()); | |||
Drawing<?> dg = sheet2.createDrawingPatriarch(); | |||
Comment cc2 = dg.createCellComment(new XSSFClientAnchor()); | |||
cc2.setAuthor("Also POI"); | |||
cc2.setString(new XSSFRichTextString("A new comment")); | |||
c1r2s2.setCellComment(cc2); | |||
// Save, and re-load the file | |||
try (XSSFWorkbook workbookBack = XSSFTestDataSamples.writeOutAndReadBack(workbook)) { | |||
// Check we still have comments where we should do | |||
sheet1 = workbookBack.getSheetAt(0); | |||
sheet2 = workbookBack.getSheetAt(1); | |||
assertNotNull(sheet1.getRow(4).getCell(2).getCellComment()); | |||
assertNotNull(sheet1.getRow(6).getCell(2).getCellComment()); | |||
assertNotNull(sheet2.getRow(2).getCell(1).getCellComment()); | |||
// And check they still have the contents they should do | |||
assertEquals("Apache POI", | |||
sheet1.getRow(4).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Nick Burch", | |||
sheet1.getRow(6).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Also POI", | |||
sheet2.getRow(2).getCell(1).getCellComment().getAuthor()); | |||
assertEquals("Hello!", | |||
sheet1.getRow(4).getCell(2).getCellComment().getString().getString()); | |||
} | |||
} | |||
} | |||
@Test | |||
public void readWriteMultipleAuthors() { | |||
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithMoreVariousData.xlsx"); | |||
XSSFSheet sheet1 = workbook.getSheetAt(0); | |||
XSSFSheet sheet2 = workbook.getSheetAt(1); | |||
assertTrue( sheet1.hasComments() ); | |||
assertFalse( sheet2.hasComments() ); | |||
assertEquals("Nick Burch", | |||
sheet1.getRow(4).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Nick Burch", | |||
sheet1.getRow(6).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Torchbox", | |||
sheet1.getRow(12).getCell(2).getCellComment().getAuthor()); | |||
// Save, and re-load the file | |||
workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook); | |||
// Check we still have comments where we should do | |||
sheet1 = workbook.getSheetAt(0); | |||
assertNotNull(sheet1.getRow(4).getCell(2).getCellComment()); | |||
assertNotNull(sheet1.getRow(6).getCell(2).getCellComment()); | |||
assertNotNull(sheet1.getRow(12).getCell(2).getCellComment()); | |||
// And check they still have the contents they should do | |||
assertEquals("Nick Burch", | |||
sheet1.getRow(4).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Nick Burch", | |||
sheet1.getRow(6).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Torchbox", | |||
sheet1.getRow(12).getCell(2).getCellComment().getAuthor()); | |||
// Todo - check text too, once bug fixed | |||
public void readWriteMultipleAuthors() throws IOException { | |||
try (XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithMoreVariousData.xlsx")) { | |||
XSSFSheet sheet1 = workbook.getSheetAt(0); | |||
XSSFSheet sheet2 = workbook.getSheetAt(1); | |||
assertTrue(sheet1.hasComments()); | |||
assertFalse(sheet2.hasComments()); | |||
assertEquals("Nick Burch", | |||
sheet1.getRow(4).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Nick Burch", | |||
sheet1.getRow(6).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Torchbox", | |||
sheet1.getRow(12).getCell(2).getCellComment().getAuthor()); | |||
// Save, and re-load the file | |||
try (XSSFWorkbook workbookBack = XSSFTestDataSamples.writeOutAndReadBack(workbook)) { | |||
// Check we still have comments where we should do | |||
sheet1 = workbookBack.getSheetAt(0); | |||
assertNotNull(sheet1.getRow(4).getCell(2).getCellComment()); | |||
assertNotNull(sheet1.getRow(6).getCell(2).getCellComment()); | |||
assertNotNull(sheet1.getRow(12).getCell(2).getCellComment()); | |||
// And check they still have the contents they should do | |||
assertEquals("Nick Burch", | |||
sheet1.getRow(4).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Nick Burch", | |||
sheet1.getRow(6).getCell(2).getCellComment().getAuthor()); | |||
assertEquals("Torchbox", | |||
sheet1.getRow(12).getCell(2).getCellComment().getAuthor()); | |||
// Todo - check text too, once bug fixed | |||
} | |||
} | |||
} | |||
@Test | |||
public void removeComment() throws Exception { | |||
public void removeComment() { | |||
final CellAddress addrA1 = new CellAddress("A1"); | |||
final CellAddress addrA2 = new CellAddress("A2"); | |||
final CellAddress addrA3 = new CellAddress("A3"); | |||
@@ -257,7 +260,7 @@ public class TestCommentsTable { | |||
Cell A1 = getCell(sheet, 0, 0); | |||
//Cell A1 = getCell(sheet, 2, 2); | |||
Drawing<?> drawing = sheet.createDrawingPatriarch(); | |||
setComment(sheet, A1, drawing, "for A1", helper, anchor); | |||
setComment(A1, drawing, "for A1", helper, anchor); | |||
// find comment in A1 before we set the comment in B2 | |||
Comment commentA1 = A1.getCellComment(); | |||
@@ -266,7 +269,7 @@ public class TestCommentsTable { | |||
// place comment in B2, according to Bug 54920 this removes the comment in A1! | |||
Cell B2 = getCell(sheet, 1, 1); | |||
setComment(sheet, B2, drawing, "for B2", helper, anchor); | |||
setComment(B2, drawing, "for B2", helper, anchor); | |||
// find comment in A1 | |||
Comment commentB2 = B2.getCellComment(); | |||
@@ -282,7 +285,7 @@ public class TestCommentsTable { | |||
// Set the comment on a sheet | |||
// | |||
private static void setComment(Sheet sheet, Cell cell, Drawing<?> drawing, String commentText, CreationHelper helper, ClientAnchor anchor) { | |||
private static void setComment(Cell cell, Drawing<?> drawing, String commentText, CreationHelper helper, ClientAnchor anchor) { | |||
anchor.setCol1(cell.getColumnIndex()); | |||
anchor.setCol2(cell.getColumnIndex()); | |||
anchor.setRow1(cell.getRowIndex()); |
@@ -159,7 +159,7 @@ public class TestXWPFPictureData extends TestCase { | |||
} | |||
public void testBug51770() throws InvalidFormatException, IOException { | |||
public void testBug51770() throws IOException { | |||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug51170.docx"); | |||
XWPFHeaderFooterPolicy policy = doc.getHeaderFooterPolicy(); | |||
XWPFHeader header = policy.getDefaultHeader(); | |||
@@ -175,6 +175,5 @@ public class TestXWPFPictureData extends TestCase { | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -1155,32 +1155,36 @@ public abstract class BaseTestCell { | |||
} | |||
@Test | |||
public void getBooleanCellValue_returnsFalse_onABlankCell() { | |||
Cell cell = _testDataProvider.createWorkbook().createSheet().createRow(0).createCell(0); | |||
assertEquals(CellType.BLANK, cell.getCellType()); | |||
boolean result = cell.getBooleanCellValue(); | |||
assertFalse(result); | |||
public void getBooleanCellValue_returnsFalse_onABlankCell() throws IOException { | |||
try (Workbook workbook = _testDataProvider.createWorkbook()) { | |||
Cell cell = workbook.createSheet().createRow(0).createCell(0); | |||
assertEquals(CellType.BLANK, cell.getCellType()); | |||
boolean result = cell.getBooleanCellValue(); | |||
assertFalse(result); | |||
} | |||
} | |||
@Test | |||
public void setStringCellValue_ifThrows_shallNotChangeCell() { | |||
Cell cell = _testDataProvider.createWorkbook().createSheet().createRow(0).createCell(0); | |||
public void setStringCellValue_ifThrows_shallNotChangeCell() throws IOException { | |||
try (Workbook workbook = _testDataProvider.createWorkbook()) { | |||
Cell cell = workbook.createSheet().createRow(0).createCell(0); | |||
final double value = 2.78; | |||
cell.setCellValue(value); | |||
assertEquals(CellType.NUMERIC, cell.getCellType()); | |||
final double value = 2.78; | |||
cell.setCellValue(value); | |||
assertEquals(CellType.NUMERIC, cell.getCellType()); | |||
int badLength = cell.getSheet().getWorkbook().getSpreadsheetVersion().getMaxTextLength() + 1; | |||
String badStringValue = new String(new byte[badLength], StandardCharsets.UTF_8); | |||
int badLength = cell.getSheet().getWorkbook().getSpreadsheetVersion().getMaxTextLength() + 1; | |||
String badStringValue = new String(new byte[badLength], StandardCharsets.UTF_8); | |||
try { | |||
cell.setCellValue(badStringValue); | |||
} catch (IllegalArgumentException e) { | |||
// no-op, expected to throw but we need to assert something more | |||
} | |||
try { | |||
cell.setCellValue(badStringValue); | |||
} catch (IllegalArgumentException e) { | |||
// no-op, expected to throw but we need to assert something more | |||
} | |||
assertEquals(CellType.NUMERIC, cell.getCellType()); | |||
assertEquals(value, cell.getNumericCellValue(), 0); | |||
assertEquals(CellType.NUMERIC, cell.getCellType()); | |||
assertEquals(value, cell.getNumericCellValue(), 0); | |||
} | |||
} | |||
@Test | |||
@@ -1359,22 +1363,30 @@ public abstract class BaseTestCell { | |||
} | |||
@Test(expected = IllegalArgumentException.class) | |||
public void setCellType_FORMULA_onANonFormulaCell_throwsIllegalArgumentException() { | |||
public void setCellType_FORMULA_onANonFormulaCell_throwsIllegalArgumentException() throws IOException { | |||
Cell cell = getInstance(); | |||
cell.setCellType(CellType.FORMULA); | |||
try { | |||
cell.setCellType(CellType.FORMULA); | |||
} finally { | |||
cell.getSheet().getWorkbook().close(); | |||
} | |||
} | |||
@Test | |||
public void setCellType_FORMULA_onAFormulaCell_doesNothing() { | |||
public void setCellType_FORMULA_onAFormulaCell_doesNothing() throws IOException { | |||
Cell cell = getInstance(); | |||
cell.setCellFormula("3"); | |||
cell.setCellValue("foo"); | |||
cell.setCellType(CellType.FORMULA); | |||
assertEquals(CellType.FORMULA, cell.getCellType()); | |||
assertEquals(CellType.STRING, cell.getCachedFormulaResultType()); | |||
assertEquals("foo", cell.getStringCellValue()); | |||
try { | |||
cell.setCellFormula("3"); | |||
cell.setCellValue("foo"); | |||
cell.setCellType(CellType.FORMULA); | |||
assertEquals(CellType.FORMULA, cell.getCellType()); | |||
assertEquals(CellType.STRING, cell.getCachedFormulaResultType()); | |||
assertEquals("foo", cell.getStringCellValue()); | |||
} finally { | |||
cell.getSheet().getWorkbook().close(); | |||
} | |||
} | |||
@Test | |||
@@ -1397,7 +1409,7 @@ public abstract class BaseTestCell { | |||
cell.setBlank(); | |||
verify(cell).setCellType(CellType.BLANK); | |||
verify(cell).setBlank(); | |||
} | |||
private Cell getInstance() { |