package org.apache.poi.xssf.usermodel;
+import static org.apache.poi.POITestCase.skipTest;
+import static org.apache.poi.POITestCase.testPassesNow;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.io.IOException;
+import junit.framework.AssertionFailedError;
+
import org.apache.poi.ss.usermodel.BaseTestSheetShiftRows;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.util.CellUtil;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.xssf.XSSFTestDataSamples;
-import org.junit.Ignore;
+import org.apache.xmlbeans.impl.values.XmlValueDisconnectedException;
import org.junit.Test;
public final class TestXSSFSheetShiftRows extends BaseTestSheetShiftRows {
wb.close();
}
- @Ignore("Bug 59733 - shiftRows() causes org.apache.xmlbeans.impl.values.XmlValueDisconnectedException")
+ // This test is written as expected-to-fail and should be rewritten
+ // as expected-to-pass when the bug is fixed.
+ //@Ignore("Bug 59733 - shiftRows() causes org.apache.xmlbeans.impl.values.XmlValueDisconnectedException")
@Test
public void bug59733() throws IOException {
Workbook workbook = new XSSFWorkbook();
at org.apache.poi.xssf.usermodel.XSSFRow.getRowNum(XSSFRow.java:363)
at org.apache.poi.xssf.usermodel.TestXSSFSheetShiftRows.bug59733(TestXSSFSheetShiftRows.java:393)
*/
- sheet.removeRow(sheet.getRow(0));
- assertEquals(1, sheet.getRow(1).getRowNum());
+ try {
+ sheet.removeRow(sheet.getRow(0));
+ assertEquals(1, sheet.getRow(1).getRowNum());
+ testPassesNow(59733);
+ } catch (XmlValueDisconnectedException e) {
+ skipTest(e);
+ }
+
workbook.close();
+ }\r
+\r
+ private static String getCellFormula(Sheet sheet, String address) {\r
+ CellAddress cellAddress = new CellAddress(address);\r
+ Row row = sheet.getRow(cellAddress.getRow());\r
+ assertNotNull(row);\r
+ Cell cell = row.getCell(cellAddress.getColumn());\r
+ assertNotNull(cell);\r
+ assertEquals(CellType.FORMULA, cell.getCellTypeEnum());\r
+ return cell.getCellFormula();\r
+ }\r
+
+ // This test is written as expected-to-fail and should be rewritten
+ // as expected-to-pass when the bug is fixed.
+ @Test\r
+ public void testSharedFormulas() throws Exception {\r
+ XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("TestShiftRowSharedFormula.xlsx");\r
+ XSSFSheet sheet = wb.getSheetAt(0);\r
+ assertEquals("SUM(C2:C4)", getCellFormula(sheet, "C5"));\r
+ assertEquals("SUM(D2:D4)", getCellFormula(sheet, "D5"));\r
+ assertEquals("SUM(E2:E4)", getCellFormula(sheet, "E5"));\r
+\r
+ sheet.shiftRows(3, sheet.getLastRowNum(), 1);\r
+ try {\r
+ assertEquals("SUM(C2:C5)", getCellFormula(sheet, "C6"));\r
+ assertEquals("SUM(D2:D5)", getCellFormula(sheet, "D6"));\r
+ assertEquals("SUM(E2:E5)", getCellFormula(sheet, "E6"));
+ testPassesNow(59983);
+ } catch (AssertionError e) {
+ skipTest(e);
+ }
+
+ wb.close();\r
}
}