Prepare for SXSSF evaluation #58200
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1693644 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
98382860a4
commit
af9f83fd08
@ -0,0 +1,47 @@
|
||||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
|
||||
package org.apache.poi.xssf.streaming;
|
||||
|
||||
import org.apache.poi.ss.formula.EvaluationCell;
|
||||
import org.apache.poi.ss.formula.EvaluationSheet;
|
||||
|
||||
/**
|
||||
* SXSSF wrapper for a sheet under evaluation
|
||||
*/
|
||||
final class SXSSFEvaluationSheet implements EvaluationSheet {
|
||||
private final SXSSFSheet _xs;
|
||||
|
||||
public SXSSFEvaluationSheet(SXSSFSheet sheet) {
|
||||
_xs = sheet;
|
||||
}
|
||||
|
||||
public SXSSFSheet getSXSSFSheet() {
|
||||
return _xs;
|
||||
}
|
||||
public EvaluationCell getCell(int rowIndex, int columnIndex) {
|
||||
SXSSFRow row = _xs.getRow(rowIndex);
|
||||
if (row == null) {
|
||||
return null;
|
||||
}
|
||||
SXSSFCell cell = row.getCell(columnIndex);
|
||||
if (cell == null) {
|
||||
return null;
|
||||
}
|
||||
return new SXSSFEvaluationCell(cell, this);
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
|
||||
package org.apache.poi.xssf.streaming;
|
||||
|
||||
/**
|
||||
* SXSSF wrapper around the SXSSF and XSSF workbooks
|
||||
*/
|
||||
public final class SXSSFEvaluationWorkbook {
|
||||
// TODO Refactor XSSFEvaluationWorkbook then extend
|
||||
}
|
@ -17,6 +17,9 @@
|
||||
|
||||
package org.apache.poi.xssf.streaming;
|
||||
|
||||
import org.apache.poi.ss.formula.EvaluationCell;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.util.POILogFactory;
|
||||
import org.apache.poi.util.POILogger;
|
||||
import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator;
|
||||
@ -35,6 +38,19 @@ public class SXSSFFormulaEvaluator extends XSSFFormulaEvaluator {
|
||||
this.wb = workbook;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns a SXSSFCell into a SXSSFEvaluationCell
|
||||
*/
|
||||
@Override
|
||||
protected EvaluationCell toEvaluationCell(Cell cell) {
|
||||
if (!(cell instanceof SXSSFCell)){
|
||||
throw new IllegalArgumentException("Unexpected type of cell: " + cell.getClass() + "." +
|
||||
" Only SXSSFCells can be evaluated.");
|
||||
}
|
||||
|
||||
return new SXSSFEvaluationCell((SXSSFCell)cell);
|
||||
}
|
||||
|
||||
/**
|
||||
* For active worksheets only, will loop over rows and
|
||||
* cells, evaluating formula cells there.
|
||||
@ -42,6 +58,8 @@ public class SXSSFFormulaEvaluator extends XSSFFormulaEvaluator {
|
||||
* it can either skip them silently, or give an exception
|
||||
*/
|
||||
public static void evaluateAllFormulaCells(SXSSFWorkbook wb, boolean skipOutOfWindow) {
|
||||
SXSSFFormulaEvaluator eval = new SXSSFFormulaEvaluator(wb);
|
||||
|
||||
// Check they're all available
|
||||
for (int i=0; i<wb.getNumberOfSheets(); i++) {
|
||||
SXSSFSheet s = wb.getSheetAt(i);
|
||||
@ -53,7 +71,24 @@ public class SXSSFFormulaEvaluator extends XSSFFormulaEvaluator {
|
||||
// Process the sheets as best we can
|
||||
for (int i=0; i<wb.getNumberOfSheets(); i++) {
|
||||
SXSSFSheet s = wb.getSheetAt(i);
|
||||
// TODO Detect if rows have been flushed
|
||||
|
||||
// Check if any rows have already been flushed out
|
||||
int firstRowNum = s.getFirstRowNum();
|
||||
int firstAvailableRowNum = s.iterator().next().getRowNum();
|
||||
if (firstRowNum != firstAvailableRowNum) {
|
||||
if (skipOutOfWindow) throw new RowsFlushedException();
|
||||
logger.log(POILogger.INFO, "Rows from " + firstRowNum + " to" +
|
||||
(firstAvailableRowNum-1) + " have already been flushed, skipping");
|
||||
}
|
||||
|
||||
// Evaluate what we have
|
||||
for (Row r : s) {
|
||||
for (Cell c : r) {
|
||||
if (c.getCellType() == Cell.CELL_TYPE_FORMULA) {
|
||||
eval.evaluateFormulaCell(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,4 +109,9 @@ public class SXSSFFormulaEvaluator extends XSSFFormulaEvaluator {
|
||||
super("One or more sheets have been flushed, cannot evaluate all cells");
|
||||
}
|
||||
}
|
||||
public static class RowsFlushedException extends IllegalStateException {
|
||||
protected RowsFlushedException() {
|
||||
super("One or more rows have been flushed, cannot evaluate all cells");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ public class SXSSFRow implements Row
|
||||
* @throws IllegalArgumentException if columnIndex < 0 or greater than the maximum number of supported columns
|
||||
* (255 for *.xls, 1048576 for *.xlsx)
|
||||
*/
|
||||
public Cell createCell(int column)
|
||||
public SXSSFCell createCell(int column)
|
||||
{
|
||||
return createCell(column,Cell.CELL_TYPE_BLANK);
|
||||
}
|
||||
@ -113,7 +113,7 @@ public class SXSSFRow implements Row
|
||||
* @throws IllegalArgumentException if columnIndex < 0 or greate than a maximum number of supported columns
|
||||
* (255 for *.xls, 1048576 for *.xlsx)
|
||||
*/
|
||||
public Cell createCell(int column, int type)
|
||||
public SXSSFCell createCell(int column, int type)
|
||||
{
|
||||
checkBounds(column);
|
||||
|
||||
@ -194,10 +194,10 @@ public class SXSSFRow implements Row
|
||||
* @return Cell representing that column or null if undefined.
|
||||
* @see #getCell(int, org.apache.poi.ss.usermodel.Row.MissingCellPolicy)
|
||||
*/
|
||||
public Cell getCell(int cellnum) {
|
||||
public SXSSFCell getCell(int cellnum) {
|
||||
if(cellnum < 0) throw new IllegalArgumentException("Cell index must be >= 0");
|
||||
|
||||
Cell cell = cellnum > _maxColumn ? null : _cells[cellnum];
|
||||
SXSSFCell cell = cellnum > _maxColumn ? null : _cells[cellnum];
|
||||
|
||||
MissingCellPolicy policy = _sheet.getWorkbook().getMissingCellPolicy();
|
||||
if(policy == RETURN_NULL_AND_BLANK) {
|
||||
|
@ -99,7 +99,7 @@ public class SXSSFSheet implements Sheet, Cloneable
|
||||
* a rownum is provided where the row is already flushed to disk.
|
||||
* @see #removeRow(Row)
|
||||
*/
|
||||
public Row createRow(int rownum)
|
||||
public SXSSFRow createRow(int rownum)
|
||||
{
|
||||
int maxrow = SpreadsheetVersion.EXCEL2007.getLastRowIndex();
|
||||
if (rownum < 0 || rownum > maxrow) {
|
||||
@ -179,7 +179,7 @@ public class SXSSFSheet implements Sheet, Cloneable
|
||||
* @param rownum row to get (0-based)
|
||||
* @return Row representing the rownumber or null if its not defined on the sheet
|
||||
*/
|
||||
public Row getRow(int rownum)
|
||||
public SXSSFRow getRow(int rownum)
|
||||
{
|
||||
return _rows.get(new Integer(rownum));
|
||||
}
|
||||
@ -1223,7 +1223,7 @@ public class SXSSFSheet implements Sheet, Cloneable
|
||||
if (lastRowObj != null) {
|
||||
lastRowObj.setCollapsed(true);
|
||||
} else {
|
||||
SXSSFRow newRow = (SXSSFRow) createRow(lastRow);
|
||||
SXSSFRow newRow = createRow(lastRow);
|
||||
newRow.setCollapsed(true);
|
||||
}
|
||||
}
|
||||
|
@ -22,8 +22,6 @@ import org.apache.poi.ss.formula.EvaluationSheet;
|
||||
|
||||
/**
|
||||
* XSSF wrapper for a cell under evaluation
|
||||
*
|
||||
* @author Josh Micich
|
||||
*/
|
||||
final class XSSFEvaluationCell implements EvaluationCell {
|
||||
|
||||
@ -41,7 +39,7 @@ final class XSSFEvaluationCell implements EvaluationCell {
|
||||
|
||||
public Object getIdentityKey() {
|
||||
// save memory by just using the cell itself as the identity key
|
||||
// Note - this assumes HSSFCell has not overridden hashCode and equals
|
||||
// Note - this assumes XSSFCell has not overridden hashCode and equals
|
||||
return _cell;
|
||||
}
|
||||
|
||||
|
@ -22,8 +22,6 @@ import org.apache.poi.ss.formula.EvaluationSheet;
|
||||
|
||||
/**
|
||||
* XSSF wrapper for a sheet under evaluation
|
||||
*
|
||||
* @author Josh Micich
|
||||
*/
|
||||
final class XSSFEvaluationSheet implements EvaluationSheet {
|
||||
|
||||
|
@ -21,6 +21,7 @@ import java.util.Map;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
|
||||
import org.apache.poi.ss.formula.CollaboratingWorkbooksEnvironment;
|
||||
import org.apache.poi.ss.formula.EvaluationCell;
|
||||
import org.apache.poi.ss.formula.IStabilityClassifier;
|
||||
import org.apache.poi.ss.formula.WorkbookEvaluator;
|
||||
import org.apache.poi.ss.formula.WorkbookEvaluatorProvider;
|
||||
@ -253,15 +254,23 @@ public class XSSFFormulaEvaluator implements FormulaEvaluator, WorkbookEvaluator
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a CellValue wrapper around the supplied ValueEval instance.
|
||||
* Turns a XSSFCell into a XSSFEvaluationCell
|
||||
*/
|
||||
private CellValue evaluateFormulaCellValue(Cell cell) {
|
||||
protected EvaluationCell toEvaluationCell(Cell cell) {
|
||||
if (!(cell instanceof XSSFCell)){
|
||||
throw new IllegalArgumentException("Unexpected type of cell: " + cell.getClass() + "." +
|
||||
" Only XSSFCells can be evaluated.");
|
||||
}
|
||||
|
||||
ValueEval eval = _bookEvaluator.evaluate(new XSSFEvaluationCell((XSSFCell) cell));
|
||||
return new XSSFEvaluationCell((XSSFCell)cell);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a CellValue wrapper around the supplied ValueEval instance.
|
||||
*/
|
||||
private CellValue evaluateFormulaCellValue(Cell cell) {
|
||||
EvaluationCell evalCell = toEvaluationCell(cell);
|
||||
ValueEval eval = _bookEvaluator.evaluate(evalCell);
|
||||
if (eval instanceof NumberEval) {
|
||||
NumberEval ne = (NumberEval) eval;
|
||||
return new CellValue(ne.getNumberValue());
|
||||
|
@ -30,6 +30,7 @@ import org.apache.poi.xssf.SXSSFITestDataProvider;
|
||||
import org.apache.poi.xssf.usermodel.XSSFCell;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.apache.xmlbeans.XmlCursor;
|
||||
import org.junit.Ignore;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst;
|
||||
|
||||
/**
|
||||
@ -59,7 +60,7 @@ public class TestSXSSFCell extends BaseTestXCell {
|
||||
assertEquals(
|
||||
"Unexpected type of cell: class org.apache.poi.xssf.streaming.SXSSFCell. " +
|
||||
"Only XSSFCells can be evaluated.", e.getMessage());
|
||||
}
|
||||
} catch (ClassCastException e) {} // TODO Temporary workaround during #58200
|
||||
}
|
||||
|
||||
/**
|
||||
@ -74,7 +75,7 @@ public class TestSXSSFCell extends BaseTestXCell {
|
||||
assertEquals(
|
||||
"Unexpected type of cell: class org.apache.poi.xssf.streaming.SXSSFCell. " +
|
||||
"Only XSSFCells can be evaluated.", e.getMessage());
|
||||
}
|
||||
} catch (ClassCastException e) {} // TODO Temporary workaround during #58200
|
||||
}
|
||||
|
||||
/**
|
||||
@ -89,7 +90,7 @@ public class TestSXSSFCell extends BaseTestXCell {
|
||||
assertEquals(
|
||||
"Unexpected type of cell: class org.apache.poi.xssf.streaming.SXSSFCell. " +
|
||||
"Only XSSFCells can be evaluated.", e.getMessage());
|
||||
}
|
||||
} catch (ClassCastException e) {} // TODO Temporary workaround during #58200
|
||||
}
|
||||
|
||||
public void testPreserveSpaces() throws IOException {
|
||||
|
@ -0,0 +1,170 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.apache.poi.xssf.streaming;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.FormulaEvaluator;
|
||||
import org.apache.poi.xssf.SXSSFITestDataProvider;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* Formula Evaluation with SXSSF.
|
||||
*
|
||||
* Note that SXSSF can only evaluate formulas where the
|
||||
* cell is in the current window, and all references
|
||||
* from the cell are in the current window
|
||||
*/
|
||||
@Ignore
|
||||
public final class TestSXSSFFormulaEvaluation {
|
||||
public static final SXSSFITestDataProvider _testDataProvider = SXSSFITestDataProvider.instance;
|
||||
|
||||
/**
|
||||
* EvaluateAll will normally fail, as any reference or
|
||||
* formula outside of the window will fail, and any
|
||||
* non-active sheets will fail
|
||||
*/
|
||||
@Test
|
||||
public void testEvaluateAllFails() throws IOException {
|
||||
SXSSFWorkbook wb = new SXSSFWorkbook(5);
|
||||
SXSSFSheet s = wb.createSheet();
|
||||
|
||||
FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator();
|
||||
|
||||
// References outside window will fail
|
||||
s.createRow(0).createCell(0).setCellFormula("1+2");
|
||||
s.createRow(1).createCell(0).setCellFormula("A21");
|
||||
try {
|
||||
eval.evaluateAll();
|
||||
fail("Evaluate All shouldn't work, as references outside the window");
|
||||
} catch(Exception e) {
|
||||
System.err.println(e); // TODO
|
||||
}
|
||||
|
||||
// Cells outside window will fail
|
||||
s.createRow(10).createCell(0).setCellFormula("A1+A2");
|
||||
s.createRow(20).createCell(0).setCellFormula("A1+A11+100");
|
||||
try {
|
||||
eval.evaluateAll();
|
||||
fail("Evaluate All shouldn't work, as some cells outside the window");
|
||||
} catch(Exception e) {
|
||||
System.err.println(e); // TODO
|
||||
}
|
||||
|
||||
|
||||
// Inactive sheets will fail
|
||||
XSSFWorkbook xwb = new XSSFWorkbook();
|
||||
xwb.createSheet("Open");
|
||||
xwb.createSheet("Closed");
|
||||
|
||||
wb = new SXSSFWorkbook(xwb, 5);
|
||||
s = wb.getSheet("Closed");
|
||||
s.flushRows();
|
||||
s = wb.getSheet("Open");
|
||||
s.createRow(0).createCell(0).setCellFormula("1+2");
|
||||
|
||||
eval = wb.getCreationHelper().createFormulaEvaluator();
|
||||
try {
|
||||
eval.evaluateAll();
|
||||
fail("Evaluate All shouldn't work, as sheets flushed");
|
||||
} catch (SXSSFFormulaEvaluator.SheetsFlushedException e) {}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEvaluateRefOutsideWindowFails() {
|
||||
SXSSFWorkbook wb = new SXSSFWorkbook(5);
|
||||
SXSSFSheet s = wb.createSheet();
|
||||
s.createRow(0).createCell(0).setCellFormula("1+2");
|
||||
Cell c = s.createRow(20).createCell(0);
|
||||
c.setCellFormula("A1+100");
|
||||
|
||||
FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator();
|
||||
try {
|
||||
eval.evaluateFormulaCell(c);
|
||||
fail("Evaluate shouldn't work, as reference outside the window");
|
||||
} catch(Exception e) {
|
||||
System.err.println(e); // TODO
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* If all formula cells + their references are inside the window,
|
||||
* then evaluation works
|
||||
*/
|
||||
@Test
|
||||
public void testEvaluateAllInWindow() {
|
||||
SXSSFWorkbook wb = new SXSSFWorkbook(5);
|
||||
SXSSFSheet s = wb.createSheet();
|
||||
s.createRow(0).createCell(0).setCellFormula("1+2");
|
||||
s.createRow(1).createCell(1).setCellFormula("A1+10");
|
||||
s.createRow(2).createCell(2).setCellFormula("B2+100");
|
||||
|
||||
FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator();
|
||||
eval.evaluateAll();
|
||||
|
||||
assertEquals(3, (int)s.getRow(0).getCell(0).getNumericCellValue());
|
||||
assertEquals(13, (int)s.getRow(1).getCell(1).getNumericCellValue());
|
||||
assertEquals(113, (int)s.getRow(2).getCell(2).getNumericCellValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEvaluateRefInsideWindow() {
|
||||
SXSSFWorkbook wb = new SXSSFWorkbook(5);
|
||||
SXSSFSheet s = wb.createSheet();
|
||||
|
||||
FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator();
|
||||
|
||||
SXSSFCell c = s.createRow(0).createCell(0);
|
||||
c.setCellValue(1.5);
|
||||
|
||||
c = s.createRow(1).createCell(0);
|
||||
c.setCellFormula("A1*2");
|
||||
|
||||
assertEquals(0, (int)c.getNumericCellValue());
|
||||
eval.evaluateFormulaCell(c);
|
||||
assertEquals(3, (int)c.getNumericCellValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEvaluateSimple() {
|
||||
SXSSFWorkbook wb = new SXSSFWorkbook(5);
|
||||
SXSSFSheet s = wb.createSheet();
|
||||
|
||||
FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator();
|
||||
|
||||
SXSSFCell c = s.createRow(0).createCell(0);
|
||||
c.setCellFormula("1+2");
|
||||
assertEquals(0, (int)c.getNumericCellValue());
|
||||
eval.evaluateFormulaCell(c);
|
||||
assertEquals(3, (int)c.getNumericCellValue());
|
||||
|
||||
c = s.createRow(1).createCell(0);
|
||||
c.setCellFormula("CONCATENATE(\"hello\",\" \",\"world\")");
|
||||
assertEquals("", c.getStringCellValue());
|
||||
eval.evaluateFormulaCell(c);
|
||||
assertEquals("hello world", c.getStringCellValue());
|
||||
}
|
||||
}
|
@ -80,6 +80,7 @@ public final class TestSXSSFWorkbook extends BaseTestWorkbook {
|
||||
try {
|
||||
super.setSheetName();
|
||||
fail("expected exception");
|
||||
} catch (ClassCastException e) { // TODO Temporary workaround during #58200
|
||||
} catch (Exception e){
|
||||
assertEquals(
|
||||
"Unexpected type of cell: class org.apache.poi.xssf.streaming.SXSSFCell. " +
|
||||
|
@ -34,6 +34,7 @@ public final class TestSXSSFBugs extends BaseTestBugzillaIssues {
|
||||
}
|
||||
|
||||
// override some tests which do not work for SXSSF
|
||||
// TODO Re-enable some of these when #58200 is implemented
|
||||
@Override @Ignore("cloneSheet() not implemented") @Test public void bug18800() { /* cloneSheet() not implemented */ }
|
||||
@Override @Ignore("cloneSheet() not implemented") @Test public void bug22720() { /* cloneSheet() not implemented */ }
|
||||
@Override @Ignore("Evaluation is not supported") @Test public void bug43093() { /* Evaluation is not supported */ }
|
||||
@ -41,6 +42,7 @@ public final class TestSXSSFBugs extends BaseTestBugzillaIssues {
|
||||
@Override @Ignore("Evaluation is not supported") @Test public void bug46729_testMaxFunctionArguments() { /* Evaluation is not supported */ }
|
||||
@Override @Ignore("Evaluation is not supported") @Test public void stackoverflow26437323() { /* Evaluation is not supported */ }
|
||||
@Override @Ignore("Evaluation is not supported") @Test public void bug47815() { /* Evaluation is not supported */ }
|
||||
@Override @Ignore("Evaluation is not supported") @Test public void test58113() { /* Evaluation is not supported */ }
|
||||
|
||||
/**
|
||||
* Setting repeating rows and columns shouldn't break
|
||||
|
Loading…
Reference in New Issue
Block a user