Преглед на файлове

Bug 35897 - Password protected files

+ Junit4 modifications, needed for expected exceptions

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1557281 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_10_FINAL
Andreas Beeker преди 10 години
родител
ревизия
77436875d1

+ 3
- 2
src/java/org/apache/poi/hssf/record/FilePassRecord.java Целия файл



package org.apache.poi.hssf.record; package org.apache.poi.hssf.record;


import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.util.HexDump; import org.apache.poi.util.HexDump;
import org.apache.poi.util.LittleEndianOutput; import org.apache.poi.util.LittleEndianOutput;




switch (_encryptionType) { switch (_encryptionType) {
case ENCRYPTION_XOR: case ENCRYPTION_XOR:
throw new RecordFormatException("HSSF does not currently support XOR obfuscation");
throw new EncryptedDocumentException("HSSF does not currently support XOR obfuscation");
case ENCRYPTION_OTHER: case ENCRYPTION_OTHER:
// handled below // handled below
break; break;
break; break;
case ENCRYPTION_OTHER_CAPI_2: case ENCRYPTION_OTHER_CAPI_2:
case ENCRYPTION_OTHER_CAPI_3: case ENCRYPTION_OTHER_CAPI_3:
throw new RecordFormatException(
throw new EncryptedDocumentException(
"HSSF does not currently support CryptoAPI encryption"); "HSSF does not currently support CryptoAPI encryption");
default: default:
throw new RecordFormatException("Unknown encryption info " + _encryptionInfo); throw new RecordFormatException("Unknown encryption info " + _encryptionInfo);

+ 42
- 5
src/java/org/apache/poi/hssf/record/RecordFactory.java Целия файл

import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.util.*;

import org.apache.poi.hssf.record.chart.*;
import org.apache.poi.hssf.record.pivottable.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.hssf.record.chart.BeginRecord;
import org.apache.poi.hssf.record.chart.CatLabRecord;
import org.apache.poi.hssf.record.chart.ChartEndBlockRecord;
import org.apache.poi.hssf.record.chart.ChartEndObjectRecord;
import org.apache.poi.hssf.record.chart.ChartFRTInfoRecord;
import org.apache.poi.hssf.record.chart.ChartRecord;
import org.apache.poi.hssf.record.chart.ChartStartBlockRecord;
import org.apache.poi.hssf.record.chart.ChartStartObjectRecord;
import org.apache.poi.hssf.record.chart.ChartTitleFormatRecord;
import org.apache.poi.hssf.record.chart.DataFormatRecord;
import org.apache.poi.hssf.record.chart.EndRecord;
import org.apache.poi.hssf.record.chart.LegendRecord;
import org.apache.poi.hssf.record.chart.LinkedDataRecord;
import org.apache.poi.hssf.record.chart.SeriesRecord;
import org.apache.poi.hssf.record.chart.SeriesTextRecord;
import org.apache.poi.hssf.record.chart.SeriesToChartGroupRecord;
import org.apache.poi.hssf.record.chart.ValueRangeRecord;
import org.apache.poi.hssf.record.pivottable.DataItemRecord;
import org.apache.poi.hssf.record.pivottable.ExtendedPivotTableViewFieldsRecord;
import org.apache.poi.hssf.record.pivottable.PageItemRecord;
import org.apache.poi.hssf.record.pivottable.StreamIDRecord;
import org.apache.poi.hssf.record.pivottable.ViewDefinitionRecord;
import org.apache.poi.hssf.record.pivottable.ViewFieldsRecord;
import org.apache.poi.hssf.record.pivottable.ViewSourceRecord;


/** /**
* Title: Record Factory<P> * Title: Record Factory<P>
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} catch (InvocationTargetException e) { } catch (InvocationTargetException e) {
throw new RecordFormatException("Unable to construct record instance" , e.getTargetException());
Throwable t = e.getTargetException();
if (t instanceof RecordFormatException) {
throw (RecordFormatException)t;
} else if (t instanceof EncryptedDocumentException) {
throw (EncryptedDocumentException)t;
} else {
throw new RecordFormatException("Unable to construct record instance" , t);
}
} }
} }
public Class<? extends Record> getRecordClass() { public Class<? extends Record> getRecordClass() {

+ 17
- 21
src/ooxml/testcases/org/apache/poi/xssf/AllXSSFTests.java Целия файл



package org.apache.poi.xssf; package org.apache.poi.xssf;


import junit.framework.Test;
import junit.framework.TestSuite;

import org.apache.poi.ss.format.TestCellFormatPart; import org.apache.poi.ss.format.TestCellFormatPart;
import org.apache.poi.ss.util.TestCellReference; import org.apache.poi.ss.util.TestCellReference;
import org.apache.poi.xssf.eventusermodel.TestXSSFReader; import org.apache.poi.xssf.eventusermodel.TestXSSFReader;
import org.apache.poi.xssf.usermodel.AllXSSFUsermodelTests; import org.apache.poi.xssf.usermodel.AllXSSFUsermodelTests;
import org.apache.poi.xssf.util.TestCTColComparator; import org.apache.poi.xssf.util.TestCTColComparator;
import org.apache.poi.xssf.util.TestNumericRanges; import org.apache.poi.xssf.util.TestNumericRanges;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;



/** /**
* Collects all tests for <tt>org.apache.poi.xssf</tt> and sub-packages. * Collects all tests for <tt>org.apache.poi.xssf</tt> and sub-packages.
*
* @author Josh Micich
*/ */
@RunWith(Suite.class)
@Suite.SuiteClasses({
AllXSSFUsermodelTests.class,
TestXSSFReader.class,
TestXSSFExcelExtractor.class,
TestLoadSaveXSSF.class,
TestCommentsTable.class,
TestSharedStringsTable.class,
TestStylesTable.class,
TestCellReference.class,
TestCTColComparator.class,
TestNumericRanges.class,
TestCellFormatPart.class
})
public final class AllXSSFTests { public final class AllXSSFTests {

public static Test suite() {
TestSuite result = new TestSuite(AllXSSFTests.class.getName());
result.addTest(AllXSSFUsermodelTests.suite());
result.addTestSuite(TestXSSFReader.class);
result.addTestSuite(TestXSSFExcelExtractor.class);
result.addTestSuite(TestLoadSaveXSSF.class);
result.addTestSuite(TestCommentsTable.class);
result.addTestSuite(TestSharedStringsTable.class);
result.addTestSuite(TestStylesTable.class);
result.addTestSuite(TestCellReference.class);
result.addTestSuite(TestCTColComparator.class);
result.addTestSuite(TestNumericRanges.class);
result.addTestSuite(TestCellFormatPart.class);
return result;
}
} }

+ 31
- 39
src/ooxml/testcases/org/apache/poi/xssf/usermodel/AllXSSFUsermodelTests.java Целия файл



package org.apache.poi.xssf.usermodel; package org.apache.poi.xssf.usermodel;


import junit.framework.Test;
import junit.framework.TestSuite;

import org.apache.poi.xssf.usermodel.extensions.TestXSSFBorder; import org.apache.poi.xssf.usermodel.extensions.TestXSSFBorder;
import org.apache.poi.xssf.usermodel.extensions.TestXSSFCellFill; import org.apache.poi.xssf.usermodel.extensions.TestXSSFCellFill;
import org.apache.poi.xssf.usermodel.extensions.TestXSSFSheetComments; import org.apache.poi.xssf.usermodel.extensions.TestXSSFSheetComments;
import org.apache.poi.xssf.usermodel.helpers.TestColumnHelper; import org.apache.poi.xssf.usermodel.helpers.TestColumnHelper;
import org.apache.poi.xssf.usermodel.helpers.TestHeaderFooterHelper; import org.apache.poi.xssf.usermodel.helpers.TestHeaderFooterHelper;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;


/** /**
* Collects all tests for <tt>org.apache.poi.xssf.usermodel</tt> and sub-packages. * Collects all tests for <tt>org.apache.poi.xssf.usermodel</tt> and sub-packages.
*
* @author Josh Micich
*/ */
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestFormulaEvaluatorOnXSSF.class,
TestSheetHiding.class,
TestXSSFBugs.class,
TestXSSFDataFormat.class,
TestXSSFCellStyle.class,
TestXSSFComment.class,
TestXSSFDialogSheet.class,
TestXSSFDrawing.class,
TestXSSFFont.class,
TestXSSFFormulaEvaluation.class,
TestXSSFHeaderFooter.class,
TestXSSFHyperlink.class,
TestXSSFName.class,
TestXSSFPicture.class,
TestXSSFPictureData.class,
TestXSSFPrintSetup.class,
TestXSSFRichTextString.class,
TestXSSFRow.class,
TestXSSFSheet.class,
TestXSSFSheetUpdateArrayFormulas.class,
TestXSSFWorkbook.class,
TestXSSFBorder.class,
TestXSSFCellFill.class,
TestXSSFSheetComments.class,
TestColumnHelper.class,
TestHeaderFooterHelper.class
})
public final class AllXSSFUsermodelTests { public final class AllXSSFUsermodelTests {

public static Test suite() {
TestSuite result = new TestSuite(AllXSSFUsermodelTests.class.getName());
result.addTestSuite(TestFormulaEvaluatorOnXSSF.class);
result.addTestSuite(TestSheetHiding.class);
result.addTestSuite(TestXSSFBugs.class);
result.addTestSuite(TestXSSFDataFormat.class);
result.addTestSuite(TestXSSFCellStyle.class);
result.addTestSuite(TestXSSFComment.class);
result.addTestSuite(TestXSSFDialogSheet.class);
result.addTestSuite(TestXSSFDrawing.class);
result.addTestSuite(TestXSSFFont.class);
result.addTestSuite(TestXSSFFormulaEvaluation.class);
result.addTestSuite(TestXSSFHeaderFooter.class);
result.addTestSuite(TestXSSFHyperlink.class);
result.addTestSuite(TestXSSFName.class);
result.addTestSuite(TestXSSFPicture.class);
result.addTestSuite(TestXSSFPictureData.class);
result.addTestSuite(TestXSSFPrintSetup.class);
result.addTestSuite(TestXSSFRichTextString.class);
result.addTestSuite(TestXSSFRow.class);
result.addTestSuite(TestXSSFSheet.class);
result.addTestSuite(TestXSSFSheetUpdateArrayFormulas.class);
result.addTestSuite(TestXSSFWorkbook.class);

result.addTestSuite(TestXSSFBorder.class);
result.addTestSuite(TestXSSFCellFill.class);
result.addTestSuite(TestXSSFSheetComments.class);

result.addTestSuite(TestColumnHelper.class);
result.addTestSuite(TestHeaderFooterHelper.class);

return result;
}
} }

+ 117
- 53
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java Целия файл



package org.apache.poi.xssf.usermodel; package org.apache.poi.xssf.usermodel;


import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.InputStream; import java.io.InputStream;
import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.ss.formula.eval.ErrorEval;
import org.apache.poi.ss.formula.eval.ValueEval; import org.apache.poi.ss.formula.eval.ValueEval;
import org.apache.poi.ss.formula.functions.Function; import org.apache.poi.ss.formula.functions.Function;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.usermodel.BaseTestBugzillaIssues;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.Comment;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.FormulaError;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference; import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.model.CalculationChain; import org.apache.poi.xssf.model.CalculationChain;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill; import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill;
import org.junit.Ignore;
import org.junit.Test;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;


* test writing a file with large number of unique strings, * test writing a file with large number of unique strings,
* open resulting file in Excel to check results! * open resulting file in Excel to check results!
*/ */
public void test15375_2() {
baseTest15375(1000);
@Test
public void bug15375_2() {
bug15375(1000);
} }


/** /**
* Named ranges had the right reference, but * Named ranges had the right reference, but
* the wrong sheet name * the wrong sheet name
*/ */
public void test45430() {
@Test
public void bug45430() {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("45430.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("45430.xlsx");
assertFalse(wb.isMacroEnabled()); assertFalse(wb.isMacroEnabled());
assertEquals(3, wb.getNumberOfNames()); assertEquals(3, wb.getNumberOfNames());
/** /**
* We should carry vba macros over after save * We should carry vba macros over after save
*/ */
public void test45431() throws Exception {
@Test
public void bug45431() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("45431.xlsm"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("45431.xlsm");
OPCPackage pkg = wb.getPackage(); OPCPackage pkg = wb.getPackage();
assertTrue(wb.isMacroEnabled()); assertTrue(wb.isMacroEnabled());
assertNotNull(drw); assertNotNull(drw);
} }


public void test47504() {
@Test
public void bug47504() {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("47504.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("47504.xlsx");
assertEquals(1, wb.getNumberOfSheets()); assertEquals(1, wb.getNumberOfSheets());
XSSFSheet sh = wb.getSheetAt(0); XSSFSheet sh = wb.getSheetAt(0);
* Clearly Excel shouldn't do this, but test that we can * Clearly Excel shouldn't do this, but test that we can
* read the file despite the naughtyness * read the file despite the naughtyness
*/ */
public void test49020() throws Exception {
@Test
public void bug49020() throws Exception {
/*XSSFWorkbook wb =*/ XSSFTestDataSamples.openSampleWorkbook("BrNotClosed.xlsx"); /*XSSFWorkbook wb =*/ XSSFTestDataSamples.openSampleWorkbook("BrNotClosed.xlsx");
} }


/** /**
* ensure that CTPhoneticPr is loaded by the ooxml test suite so that it is included in poi-ooxml-schemas * ensure that CTPhoneticPr is loaded by the ooxml test suite so that it is included in poi-ooxml-schemas
*/ */
public void test49325() throws Exception {
@Test
public void bug49325() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("49325.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("49325.xlsx");
CTWorksheet sh = wb.getSheetAt(0).getCTWorksheet(); CTWorksheet sh = wb.getSheetAt(0).getCTWorksheet();
assertNotNull(sh.getPhoneticPr()); assertNotNull(sh.getPhoneticPr());
* Names which are defined with a Sheet * Names which are defined with a Sheet
* should return that sheet index properly * should return that sheet index properly
*/ */
public void test48923() throws Exception {
@Test
public void bug48923() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48923.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48923.xlsx");
assertEquals(4, wb.getNumberOfNames()); assertEquals(4, wb.getNumberOfNames());
* *
* TODO: delete this test case when MROUND and VAR are implemented * TODO: delete this test case when MROUND and VAR are implemented
*/ */
public void test48539() throws Exception {
@Test
public void bug48539() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48539.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48539.xlsx");
assertEquals(3, wb.getNumberOfSheets()); assertEquals(3, wb.getNumberOfSheets());
* Foreground colours should be found even if * Foreground colours should be found even if
* a theme is used * a theme is used
*/ */
public void test48779() throws Exception {
@Test
public void bug48779() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48779.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48779.xlsx");
XSSFCell cell = wb.getSheetAt(0).getRow(0).getCell(0); XSSFCell cell = wb.getSheetAt(0).getRow(0).getCell(0);
XSSFCellStyle cs = cell.getCellStyle(); XSSFCellStyle cs = cell.getCellStyle();
XSSFCellFill fg = wb.getStylesSource().getFillAt(2); XSSFCellFill fg = wb.getStylesSource().getFillAt(2);
assertEquals(0, fg.getFillForegroundColor().getIndexed()); assertEquals(0, fg.getFillForegroundColor().getIndexed());
assertEquals(0.0, fg.getFillForegroundColor().getTint());
assertEquals(0.0, fg.getFillForegroundColor().getTint(), 0);
assertEquals("FFFF0000", fg.getFillForegroundColor().getARGBHex()); assertEquals("FFFF0000", fg.getFillForegroundColor().getARGBHex());
assertEquals(64, fg.getFillBackgroundColor().getIndexed()); assertEquals(64, fg.getFillBackgroundColor().getIndexed());
* With XSSF, that wasn't the case, but this verfies * With XSSF, that wasn't the case, but this verfies
* that it now is again * that it now is again
*/ */
public void test48718() throws Exception {
@Test
public void bug48718() throws Exception {
// Verify the HSSF behaviour // Verify the HSSF behaviour
// Then ensure the same for XSSF // Then ensure the same for XSSF
Workbook[] wbs = new Workbook[] { Workbook[] wbs = new Workbook[] {
* Ensure General and @ format are working properly * Ensure General and @ format are working properly
* for integers * for integers
*/ */
public void test47490() throws Exception {
@Test
public void bug47490() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("GeneralFormatTests.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("GeneralFormatTests.xlsx");
Sheet s = wb.getSheetAt(1); Sheet s = wb.getSheetAt(1);
Row r; Row r;
DataFormatter df = new DataFormatter(); DataFormatter df = new DataFormatter();
r = s.getRow(1); r = s.getRow(1);
assertEquals(1.0, r.getCell(2).getNumericCellValue());
assertEquals(1.0, r.getCell(2).getNumericCellValue(), 0);
assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString()); assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString());
assertEquals("1", df.formatCellValue(r.getCell(2))); assertEquals("1", df.formatCellValue(r.getCell(2)));
assertEquals("1", df.formatRawCellContents(1.0, -1, "@")); assertEquals("1", df.formatRawCellContents(1.0, -1, "@"));
assertEquals("1", df.formatRawCellContents(1.0, -1, "General")); assertEquals("1", df.formatRawCellContents(1.0, -1, "General"));
r = s.getRow(2); r = s.getRow(2);
assertEquals(12.0, r.getCell(2).getNumericCellValue());
assertEquals(12.0, r.getCell(2).getNumericCellValue(), 0);
assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString()); assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString());
assertEquals("12", df.formatCellValue(r.getCell(2))); assertEquals("12", df.formatCellValue(r.getCell(2)));
assertEquals("12", df.formatRawCellContents(12.0, -1, "@")); assertEquals("12", df.formatRawCellContents(12.0, -1, "@"));
assertEquals("12", df.formatRawCellContents(12.0, -1, "General")); assertEquals("12", df.formatRawCellContents(12.0, -1, "General"));
r = s.getRow(3); r = s.getRow(3);
assertEquals(123.0, r.getCell(2).getNumericCellValue());
assertEquals(123.0, r.getCell(2).getNumericCellValue(), 0);
assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString()); assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString());
assertEquals("123", df.formatCellValue(r.getCell(2))); assertEquals("123", df.formatCellValue(r.getCell(2)));
assertEquals("123", df.formatRawCellContents(123.0, -1, "@")); assertEquals("123", df.formatRawCellContents(123.0, -1, "@"));
* and with the docs on when fetching the wrong * and with the docs on when fetching the wrong
* kind of value from a Formula cell * kind of value from a Formula cell
*/ */
public void test47815() {
@Test
public void bug47815() {
Workbook[] wbs = new Workbook[] { Workbook[] wbs = new Workbook[] {
new HSSFWorkbook(), new HSSFWorkbook(),
new XSSFWorkbook() new XSSFWorkbook()
assertEquals(Cell.CELL_TYPE_STRING, cfs.getCachedFormulaResultType()); assertEquals(Cell.CELL_TYPE_STRING, cfs.getCachedFormulaResultType());
// Different ways of retrieving // Different ways of retrieving
assertEquals(1.2, cn.getNumericCellValue());
assertEquals(1.2, cn.getNumericCellValue(), 0);
try { try {
cn.getRichStringCellValue(); cn.getRichStringCellValue();
fail(); fail();
fail(); fail();
} catch(IllegalStateException e) {} } catch(IllegalStateException e) {}
assertEquals(1.2, cfn.getNumericCellValue());
assertEquals(1.2, cfn.getNumericCellValue(), 0);
try { try {
cfn.getRichStringCellValue(); cfn.getRichStringCellValue();
fail(); fail();
* *
* The OPC spec tolerates both of these peculiarities, so does POI * The OPC spec tolerates both of these peculiarities, so does POI
*/ */
public void test49609() throws Exception {
@Test
public void bug49609() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("49609.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("49609.xlsx");
assertEquals("FAM", wb.getSheetName(0)); assertEquals("FAM", wb.getSheetName(0));
assertEquals("Cycle", wb.getSheetAt(0).getRow(0).getCell(1).getStringCellValue()); assertEquals("Cycle", wb.getSheetAt(0).getRow(0).getCell(1).getStringCellValue());


} }


public void test49783() throws Exception {
@Test
public void bug49783() throws Exception {
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("49783.xlsx"); Workbook wb = XSSFTestDataSamples.openSampleWorkbook("49783.xlsx");
Sheet sheet = wb.getSheetAt(0); Sheet sheet = wb.getSheetAt(0);
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
* preserve spaces to the 2nd bit, lest we end up * preserve spaces to the 2nd bit, lest we end up
* with something like "helloworld" ! * with something like "helloworld" !
*/ */
public void test49941() throws Exception {
@Test
public void bug49941() throws Exception {
XSSFWorkbook wb = new XSSFWorkbook(); XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet s = wb.createSheet(); XSSFSheet s = wb.createSheet();
XSSFRow r = s.createRow(0); XSSFRow r = s.createRow(0);
/** /**
* Repeatedly writing the same file which has styles * Repeatedly writing the same file which has styles
*/ */
public void test49940() throws Exception {
@Test
public void bug49940() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("styles.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("styles.xlsx");
assertEquals(3, wb.getNumberOfSheets()); assertEquals(3, wb.getNumberOfSheets());
assertEquals(10, wb.getStylesSource().getNumCellStyles()); assertEquals(10, wb.getStylesSource().getNumCellStyles());
* Various ways of removing a cell formula should all zap * Various ways of removing a cell formula should all zap
* the calcChain entry. * the calcChain entry.
*/ */
public void test49966() throws Exception {
@Test
public void bug49966() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("shared_formulas.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("shared_formulas.xlsx");
XSSFSheet sheet = wb.getSheetAt(0); XSSFSheet sheet = wb.getSheetAt(0);


} }


public void test49156() throws Exception {
@Test
public void bug49156() throws Exception {
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("49156.xlsx"); Workbook wb = XSSFTestDataSamples.openSampleWorkbook("49156.xlsx");
FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator(); FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator();


/** /**
* Newlines are valid characters in a formula * Newlines are valid characters in a formula
*/ */
public void test50440And51875() throws Exception {
@Test
public void bug50440And51875() throws Exception {
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("NewlineInFormulas.xlsx"); Workbook wb = XSSFTestDataSamples.openSampleWorkbook("NewlineInFormulas.xlsx");
Sheet s = wb.getSheetAt(0); Sheet s = wb.getSheetAt(0);
Cell c = s.getRow(0).getCell(0); Cell c = s.getRow(0).getCell(0);
assertEquals("SUM(\n1,2\n)", c.getCellFormula()); assertEquals("SUM(\n1,2\n)", c.getCellFormula());
assertEquals(3.0, c.getNumericCellValue());
assertEquals(3.0, c.getNumericCellValue(), 0);
FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator(); FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator();
formulaEvaluator.evaluateFormulaCell(c); formulaEvaluator.evaluateFormulaCell(c);
assertEquals("SUM(\n1,2\n)", c.getCellFormula()); assertEquals("SUM(\n1,2\n)", c.getCellFormula());
assertEquals(3.0, c.getNumericCellValue());
assertEquals(3.0, c.getNumericCellValue(), 0);


// For 51875 // For 51875
Cell b3 = s.getRow(2).getCell(1); Cell b3 = s.getRow(2).getCell(1);
formulaEvaluator.evaluateFormulaCell(b3); formulaEvaluator.evaluateFormulaCell(b3);
assertEquals("B1+B2", b3.getCellFormula()); // The newline is lost for shared formulas assertEquals("B1+B2", b3.getCellFormula()); // The newline is lost for shared formulas
assertEquals(3.0, b3.getNumericCellValue());
assertEquals(3.0, b3.getNumericCellValue(), 0);
} }
/** /**
* Moving a cell comment from one cell to another * Moving a cell comment from one cell to another
*/ */
public void test50795() throws Exception {
@Test
public void bug50795() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50795.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50795.xlsx");
XSSFSheet sheet = wb.getSheetAt(0); XSSFSheet sheet = wb.getSheetAt(0);
XSSFRow row = sheet.getRow(0); XSSFRow row = sheet.getRow(0);
* shades of white or black. * shades of white or black.
* For those cases, ensure we don't break on reading the colour * For those cases, ensure we don't break on reading the colour
*/ */
public void test50299() throws Exception {
@Test
public void bug50299() throws Exception {
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("50299.xlsx"); Workbook wb = XSSFTestDataSamples.openSampleWorkbook("50299.xlsx");
// Check all the colours // Check all the colours
/** /**
* Excel .xls style indexed colours in a .xlsx file * Excel .xls style indexed colours in a .xlsx file
*/ */
public void test50786() throws Exception {
@Test
public void bug50786() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50786-indexed_colours.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50786-indexed_colours.xlsx");
XSSFSheet s = wb.getSheetAt(0); XSSFSheet s = wb.getSheetAt(0);
XSSFRow r = s.getRow(2); XSSFRow r = s.getRow(2);
* If the border colours are set with themes, then we * If the border colours are set with themes, then we
* should still be able to get colours * should still be able to get colours
*/ */
public void test50846() throws Exception {
@Test
public void bug50846() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50846-border_colours.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50846-border_colours.xlsx");
XSSFSheet sheet = wb.getSheetAt(0); XSSFSheet sheet = wb.getSheetAt(0);
* then being set explicitly still should allow the * then being set explicitly still should allow the
* fetching of the RGB. * fetching of the RGB.
*/ */
public void test50784() throws Exception {
@Test
public void bug50784() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50784-font_theme_colours.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50784-font_theme_colours.xlsx");
XSSFSheet s = wb.getSheetAt(0); XSSFSheet s = wb.getSheetAt(0);
XSSFRow r = s.getRow(0); XSSFRow r = s.getRow(0);
* New lines were being eaten when setting a font on * New lines were being eaten when setting a font on
* a rich text string * a rich text string
*/ */
public void test48877() throws Exception {
@Test
public void bug48877() throws Exception {
String text = "Use \n with word wrap on to create a new line.\n" + String text = "Use \n with word wrap on to create a new line.\n" +
"This line finishes with two trailing spaces. "; "This line finishes with two trailing spaces. ";
/** /**
* Adding sheets when one has a table, then re-ordering * Adding sheets when one has a table, then re-ordering
*/ */
public void test50867() throws Exception {
@Test
public void bug50867() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50867_with_table.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50867_with_table.xlsx");
assertEquals(3, wb.getNumberOfSheets()); assertEquals(3, wb.getNumberOfSheets());
* any print settings that were there before * any print settings that were there before
*/ */
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void test49253() throws Exception {
@Test
public void bug49253() throws Exception {
XSSFWorkbook wb1 = new XSSFWorkbook(); XSSFWorkbook wb1 = new XSSFWorkbook();
XSSFWorkbook wb2 = new XSSFWorkbook(); XSSFWorkbook wb2 = new XSSFWorkbook();
/** /**
* Default Column style * Default Column style
*/ */
public void test51037() throws Exception {
@Test
public void bug51037() throws Exception {
XSSFWorkbook wb = new XSSFWorkbook(); XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet s = wb.createSheet(); XSSFSheet s = wb.createSheet();
* Repeatedly writing a file. * Repeatedly writing a file.
* Something with the SharedStringsTable currently breaks... * Something with the SharedStringsTable currently breaks...
*/ */
public void DISABLEDtest46662() throws Exception {
@Ignore
public void bug46662() throws Exception {
// New file // New file
XSSFWorkbook wb = new XSSFWorkbook(); XSSFWorkbook wb = new XSSFWorkbook();
XSSFTestDataSamples.writeOutAndReadBack(wb); XSSFTestDataSamples.writeOutAndReadBack(wb);
/** /**
* Colours and styles when the list has gaps in it * Colours and styles when the list has gaps in it
*/ */
public void test51222() throws Exception {
@Test
public void bug51222() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51222.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51222.xlsx");
XSSFSheet s = wb.getSheetAt(0); XSSFSheet s = wb.getSheetAt(0);
// assertEquals("FF1F497D", cA5_1F497D.getCellStyle().getFillForegroundXSSFColor().getARGBHex()); // assertEquals("FF1F497D", cA5_1F497D.getCellStyle().getFillForegroundXSSFColor().getARGBHex());
} }


public void test51470() throws Exception {
@Test
public void bug51470() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51470.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51470.xlsx");
XSSFSheet sh0 = wb.getSheetAt(0); XSSFSheet sh0 = wb.getSheetAt(0);
XSSFSheet sh1 = wb.cloneSheet(0); XSSFSheet sh1 = wb.cloneSheet(0);
* Add comments to Sheet 1, when Sheet 2 already has * Add comments to Sheet 1, when Sheet 2 already has
* comments (so /xl/comments1.xml is taken) * comments (so /xl/comments1.xml is taken)
*/ */
public void test51850() {
@Test
public void bug51850() {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51850.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51850.xlsx");
XSSFSheet sh1 = wb.getSheetAt(0); XSSFSheet sh1 = wb.getSheetAt(0);
XSSFSheet sh2 = wb.getSheetAt(1); XSSFSheet sh2 = wb.getSheetAt(1);
/** /**
* Sheet names with a , in them * Sheet names with a , in them
*/ */
public void test51963() throws Exception {
@Test
public void bug51963() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51963.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51963.xlsx");
XSSFSheet sheet = wb.getSheetAt(0); XSSFSheet sheet = wb.getSheetAt(0);
assertEquals("Abc,1", sheet.getSheetName()); assertEquals("Abc,1", sheet.getSheetName());
* eg =SUM($Sheet1.C1:$Sheet4.C1) * eg =SUM($Sheet1.C1:$Sheet4.C1)
* DISABLED As we can't currently evaluate these * DISABLED As we can't currently evaluate these
*/ */
public void DISABLEDtest48703() throws Exception {
@Ignore
public void bug48703() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48703.xlsx"); XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48703.xlsx");
XSSFSheet sheet = wb.getSheetAt(0); XSSFSheet sheet = wb.getSheetAt(0);
XSSFCell c1 = r1.getCell(1); XSSFCell c1 = r1.getCell(1);
XSSFCell c2 = r2.getCell(1); XSSFCell c2 = r2.getCell(1);
assertEquals(20.0, c1.getNumericCellValue());
assertEquals(20.0, c1.getNumericCellValue(), 0);
assertEquals("SUM(Sheet1!C1,Sheet2!C1,Sheet3!C1,Sheet4!C1)", c1.getCellFormula()); assertEquals("SUM(Sheet1!C1,Sheet2!C1,Sheet3!C1,Sheet4!C1)", c1.getCellFormula());
assertEquals(20.0, c2.getNumericCellValue());
assertEquals(20.0, c2.getNumericCellValue(), 0);
assertEquals("SUM(Sheet1:Sheet4!C1)", c2.getCellFormula()); assertEquals("SUM(Sheet1:Sheet4!C1)", c2.getCellFormula());
// Try evaluating both // Try evaluating both
eval.evaluateFormulaCell(c1); eval.evaluateFormulaCell(c1);
eval.evaluateFormulaCell(c2); eval.evaluateFormulaCell(c2);
assertEquals(20.0, c1.getNumericCellValue());
assertEquals(20.0, c2.getNumericCellValue());
assertEquals(20.0, c1.getNumericCellValue(), 0);
assertEquals(20.0, c2.getNumericCellValue(), 0);
} }


/** /**
* Bugzilla 51710: problems reading shared formuals from .xlsx * Bugzilla 51710: problems reading shared formuals from .xlsx
*/ */
public void test51710() {
@Test
public void bug51710() {
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("51710.xlsx"); Workbook wb = XSSFTestDataSamples.openSampleWorkbook("51710.xlsx");


final String[] columns = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N"}; final String[] columns = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N"};
/** /**
* Bug 53101: * Bug 53101:
*/ */
public void test5301(){
@Test
public void bug5301(){
Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("53101.xlsx"); Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("53101.xlsx");
FormulaEvaluator evaluator = FormulaEvaluator evaluator =
workbook.getCreationHelper().createFormulaEvaluator(); workbook.getCreationHelper().createFormulaEvaluator();
assertEquals(259.0, a1Value, 0.0); assertEquals(259.0, a1Value, 0.0);
} }


public void test54436(){
@Test
public void bug54436(){
Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("54436.xlsx"); Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("54436.xlsx");
if(!WorkbookEvaluator.getSupportedFunctionNames().contains("GETPIVOTDATA")){ if(!WorkbookEvaluator.getSupportedFunctionNames().contains("GETPIVOTDATA")){
Function func = new Function() { Function func = new Function() {
* error message when called via WorkbookFactory. * error message when called via WorkbookFactory.
* (You need to supply a password explicitly for them) * (You need to supply a password explicitly for them)
*/ */
public void test55692() throws Exception {
@Test
public void bug55692() throws Exception {
InputStream inpA = POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx"); InputStream inpA = POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx");
InputStream inpB = POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx"); InputStream inpB = POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx");
InputStream inpC = POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx"); InputStream inpC = POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx");

+ 11
- 15
src/testcases/org/apache/poi/AllPOITests.java Целия файл

import org.apache.poi.hssf.HSSFTests; import org.apache.poi.hssf.HSSFTests;
import org.apache.poi.poifs.AllPOIFSTests; import org.apache.poi.poifs.AllPOIFSTests;
import org.apache.poi.util.AllPOIUtilTests; import org.apache.poi.util.AllPOIUtilTests;

import junit.framework.Test;
import junit.framework.TestSuite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
/** /**
* Root Test Suite for entire POI project. (Includes all sub-packages of org.apache.poi)<br/> * Root Test Suite for entire POI project. (Includes all sub-packages of org.apache.poi)<br/>
*
* @author Josh Micich
*/ */
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestPOIDocumentMain.class,
AllPOIDDFTests.class,
AllPOIHPSFBasicTests.class,
HSSFTests.class,
AllPOIFSTests.class,
AllPOIUtilTests.class
})
public final class AllPOITests { public final class AllPOITests {
public static Test suite() {
TestSuite result = new TestSuite("Tests for org.apache.poi");
result.addTestSuite(TestPOIDocumentMain.class);
result.addTest(AllPOIDDFTests.suite());
result.addTest(AllPOIHPSFBasicTests.suite());
result.addTest(HSSFTests.suite());
result.addTest(AllPOIFSTests.suite());
result.addTest(AllPOIUtilTests.suite());
return result;
}
} }

+ 14
- 20
src/testcases/org/apache/poi/hssf/HSSFTests.java Целия файл



package org.apache.poi.hssf; package org.apache.poi.hssf;


import junit.framework.Test;
import junit.framework.TestSuite;

import org.apache.poi.hssf.eventmodel.TestEventRecordFactory; import org.apache.poi.hssf.eventmodel.TestEventRecordFactory;
import org.apache.poi.hssf.eventusermodel.AllEventUserModelTests; import org.apache.poi.hssf.eventusermodel.AllEventUserModelTests;
import org.apache.poi.hssf.extractor.TestExcelExtractor; import org.apache.poi.hssf.extractor.TestExcelExtractor;
import org.apache.poi.hssf.util.AllHSSFUtilTests; import org.apache.poi.hssf.util.AllHSSFUtilTests;
import org.apache.poi.ss.formula.AllSSFormulaTests; import org.apache.poi.ss.formula.AllSSFormulaTests;
import org.apache.poi.ss.util.AllSSUtilTests; import org.apache.poi.ss.util.AllSSUtilTests;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;


/** /**
* Test Suite for all sub-packages of org.apache.poi.hssf<br/> * Test Suite for all sub-packages of org.apache.poi.hssf<br/>
*
* @author Andrew C. Oliver acoliver@apache.org
*/ */
@RunWith(Suite.class)
@Suite.SuiteClasses({
AllEventUserModelTests.class,
AllModelTests.class,
AllUserModelTests.class,
AllRecordTests.class,
AllHSSFUtilTests.class,
TestExcelExtractor.class,
TestEventRecordFactory.class,
AllSSFormulaTests.class,
AllSSUtilTests.class
})
public final class HSSFTests { public final class HSSFTests {

public static Test suite() {
TestSuite suite = new TestSuite(HSSFTests.class.getName());

suite.addTest(AllEventUserModelTests.suite());
suite.addTest(AllModelTests.suite());
suite.addTest(AllUserModelTests.suite());
suite.addTest(AllRecordTests.suite());
suite.addTest(AllHSSFUtilTests.suite());
suite.addTest(new TestSuite(TestExcelExtractor.class));
suite.addTest(new TestSuite(TestEventRecordFactory.class));
suite.addTest(AllSSFormulaTests.suite());
suite.addTest(AllSSUtilTests.suite());
return suite;
}
} }

+ 2
- 1
src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java Целия файл

SILENT_EXCLUDED.add("51832.xls"); // password SILENT_EXCLUDED.add("51832.xls"); // password
SILENT_EXCLUDED.add("43493.xls"); // HSSFWorkbook cannot open it as well SILENT_EXCLUDED.add("43493.xls"); // HSSFWorkbook cannot open it as well
SILENT_EXCLUDED.add("password.xls"); SILENT_EXCLUDED.add("password.xls");
SILENT_EXCLUDED.add("46904.xls");
SILENT_EXCLUDED.add("46904.xls");
SILENT_EXCLUDED.add("xor-encryption-abc.xls"); // unsupported XOR-encryption
}; };


@Override @Override

+ 51
- 57
src/testcases/org/apache/poi/hssf/usermodel/AllUserModelTests.java Целия файл



package org.apache.poi.hssf.usermodel; package org.apache.poi.hssf.usermodel;


import junit.framework.Test;
import junit.framework.TestSuite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;


/** /**
* Collects all tests for the <tt>org.apache.poi.hssf.usermodel</tt> package. * Collects all tests for the <tt>org.apache.poi.hssf.usermodel</tt> package.
*
* @author Josh Micich
*/ */
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestBug42464.class,
TestBugs.class,
TestCellStyle.class,
TestCloneSheet.class,
TestDataValidation.class,
TestEscherGraphics.class,
TestEscherGraphics2d.class,
TestFontDetails.class,
TestFormulaEvaluatorBugs.class,
TestFormulaEvaluatorDocs.class,
TestFormulas.class,
TestHSSFCell.class,
TestHSSFClientAnchor.class,
TestHSSFComment.class,
TestHSSFConditionalFormatting.class,
TestHSSFDataFormat.class,
TestHSSFDataFormatter.class,
TestHSSFDateUtil.class,
TestHSSFFont.class,
TestHSSFFormulaEvaluator.class,
TestHSSFHeaderFooter.class,
TestHSSFHyperlink.class,
TestHSSFName.class,
TestHSSFOptimiser.class,
TestHSSFPalette.class,
TestHSSFPatriarch.class,
TestHSSFPicture.class,
TestHSSFPictureData.class,
TestHSSFRichTextString.class,
TestHSSFRow.class,
TestHSSFSheet.class,
TestHSSFSheetShiftRows.class,
TestHSSFSheetUpdateArrayFormulas.class,
TestHSSFTextbox.class,
TestHSSFWorkbook.class,
TestOLE2Embeding.class,
TestPOIFSProperties.class,
TestReadWriteChart.class,
TestRowStyle.class,
TestSanityChecker.class,
TestSheetHiding.class,
/* deliberately avoiding this one
TestUnfixedBugs.class,*/
TestUnicodeWorkbook.class,
TestNonStandardWorkbookStreamNames.class,
TestWorkbook.class
})
public class AllUserModelTests { public class AllUserModelTests {

public static Test suite() {
TestSuite result = new TestSuite(AllUserModelTests.class.getName());

result.addTestSuite(TestBug42464.class);
result.addTestSuite(TestBugs.class);
result.addTestSuite(TestCellStyle.class);
result.addTestSuite(TestCloneSheet.class);
result.addTestSuite(TestDataValidation.class);
result.addTestSuite(TestEscherGraphics.class);
result.addTestSuite(TestEscherGraphics2d.class);
result.addTestSuite(TestFontDetails.class);
result.addTestSuite(TestFormulaEvaluatorBugs.class);
result.addTestSuite(TestFormulaEvaluatorDocs.class);
result.addTestSuite(TestFormulas.class);
result.addTestSuite(TestHSSFCell.class);
result.addTestSuite(TestHSSFClientAnchor.class);
result.addTestSuite(TestHSSFComment.class);
result.addTestSuite(TestHSSFConditionalFormatting.class);
result.addTestSuite(TestHSSFDataFormat.class);
result.addTestSuite(TestHSSFDataFormatter.class);
result.addTestSuite(TestHSSFDateUtil.class);
result.addTestSuite(TestHSSFFont.class);
result.addTestSuite(TestHSSFFormulaEvaluator.class);
result.addTestSuite(TestHSSFHeaderFooter.class);
result.addTestSuite(TestHSSFHyperlink.class);
result.addTestSuite(TestHSSFName.class);
result.addTestSuite(TestHSSFOptimiser.class);
result.addTestSuite(TestHSSFPalette.class);
result.addTestSuite(TestHSSFPatriarch.class);
result.addTestSuite(TestHSSFPicture.class);
result.addTestSuite(TestHSSFPictureData.class);
result.addTestSuite(TestHSSFRichTextString.class);
result.addTestSuite(TestHSSFRow.class);
result.addTestSuite(TestHSSFSheet.class);
result.addTestSuite(TestHSSFSheetShiftRows.class);
result.addTestSuite(TestHSSFSheetUpdateArrayFormulas.class);
result.addTestSuite(TestHSSFTextbox.class);
result.addTestSuite(TestHSSFWorkbook.class);
result.addTestSuite(TestOLE2Embeding.class);
result.addTestSuite(TestPOIFSProperties.class);
result.addTestSuite(TestReadWriteChart.class);
result.addTestSuite(TestRowStyle.class);
result.addTestSuite(TestSanityChecker.class);
result.addTestSuite(TestSheetHiding.class);
/* deliberately avoiding this one
result.addTestSuite(TestUnfixedBugs.class);*/
result.addTestSuite(TestUnicodeWorkbook.class);
result.addTestSuite(TestNonStandardWorkbookStreamNames.class);
result.addTestSuite(TestWorkbook.class);

return result;
}
} }

+ 364
- 212
src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
Файловите разлики са ограничени, защото са твърде много
Целия файл


+ 28
- 14
src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java Целия файл



package org.apache.poi.ss.usermodel; package org.apache.poi.ss.usermodel;


import junit.framework.TestCase;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;


import org.apache.poi.hssf.util.PaneInformation; import org.apache.poi.hssf.util.PaneInformation;
import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.ITestDataProvider;
import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.junit.Test;


/** /**
* A base class for bugzilla issues that can be described in terms of common ss interfaces. * A base class for bugzilla issues that can be described in terms of common ss interfaces.
* *
* @author Yegor Kozlov * @author Yegor Kozlov
*/ */
public abstract class BaseTestBugzillaIssues extends TestCase {
public abstract class BaseTestBugzillaIssues {


private final ITestDataProvider _testDataProvider; private final ITestDataProvider _testDataProvider;


* *
* Also tests bug 15353 (problems with hyperlinks to Google) * Also tests bug 15353 (problems with hyperlinks to Google)
*/ */
public final void test23094() {
@Test
public final void bug23094() {
Workbook wb = _testDataProvider.createWorkbook(); Workbook wb = _testDataProvider.createWorkbook();
Sheet s = wb.createSheet(); Sheet s = wb.createSheet();
Row r = s.createRow(0); Row r = s.createRow(0);
* open resulting file in Excel to check results! * open resulting file in Excel to check results!
* @param num the number of strings to generate * @param num the number of strings to generate
*/ */
public void baseTest15375(int num) {
public final void bug15375(int num) {
Workbook wb = _testDataProvider.createWorkbook(); Workbook wb = _testDataProvider.createWorkbook();
Sheet sheet = wb.createSheet(); Sheet sheet = wb.createSheet();
CreationHelper factory = wb.getCreationHelper(); CreationHelper factory = wb.getCreationHelper();
/** /**
* Merged regions were being removed from the parent in cloned sheets * Merged regions were being removed from the parent in cloned sheets
*/ */
public final void test22720() {
@Test
public final void bug22720() {
Workbook workBook = _testDataProvider.createWorkbook(); Workbook workBook = _testDataProvider.createWorkbook();
workBook.createSheet("TEST"); workBook.createSheet("TEST");
Sheet template = workBook.getSheetAt(0); Sheet template = workBook.getSheetAt(0);


} }


public final void test28031() {
@Test
public final void bug28031() {
Workbook wb = _testDataProvider.createWorkbook(); Workbook wb = _testDataProvider.createWorkbook();
Sheet sheet = wb.createSheet(); Sheet sheet = wb.createSheet();
wb.setSheetName(0, "Sheet1"); wb.setSheetName(0, "Sheet1");
* that contains macros and this formula: * that contains macros and this formula:
* {=SUM(IF(FREQUENCY(IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),""),IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),""))>0,1))} * {=SUM(IF(FREQUENCY(IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),""),IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),""))>0,1))}
*/ */
public final void test21334() {
@Test
public final void bug21334() {
Workbook wb = _testDataProvider.createWorkbook(); Workbook wb = _testDataProvider.createWorkbook();
Sheet sh = wb.createSheet(); Sheet sh = wb.createSheet();
Cell cell = sh.createRow(0).createCell(0); Cell cell = sh.createRow(0).createCell(0);


/** another test for the number of unique strings issue /** another test for the number of unique strings issue
*test opening the resulting file in Excel*/ *test opening the resulting file in Excel*/
public final void test22568() {
@Test
public final void bug22568() {
int r=2000;int c=3; int r=2000;int c=3;


Workbook wb = _testDataProvider.createWorkbook(); Workbook wb = _testDataProvider.createWorkbook();
/** /**
* Bug 42448: Can't parse SUMPRODUCT(A!C7:A!C67, B8:B68) / B69 * Bug 42448: Can't parse SUMPRODUCT(A!C7:A!C67, B8:B68) / B69
*/ */
public final void test42448(){
@Test
public final void bug42448(){
Workbook wb = _testDataProvider.createWorkbook(); Workbook wb = _testDataProvider.createWorkbook();
Cell cell = wb.createSheet().createRow(0).createCell(0); Cell cell = wb.createSheet().createRow(0).createCell(0);
cell.setCellFormula("SUMPRODUCT(A!C7:A!C67, B8:B68) / B69"); cell.setCellFormula("SUMPRODUCT(A!C7:A!C67, B8:B68) / B69");
assertTrue("no errors parsing formula", true); assertTrue("no errors parsing formula", true);
} }


public final void test18800() {
@Test
public final void bug18800() {
Workbook book = _testDataProvider.createWorkbook(); Workbook book = _testDataProvider.createWorkbook();
book.createSheet("TEST"); book.createSheet("TEST");
Sheet sheet = book.cloneSheet(0); Sheet sheet = book.cloneSheet(0);
} }
} }


public final void testBug43093() {
@Test
public final void bug43093() {
Workbook xlw = _testDataProvider.createWorkbook(); Workbook xlw = _testDataProvider.createWorkbook();


addNewSheetWithCellsA1toD4(xlw, 1); addNewSheetWithCellsA1toD4(xlw, 1);
assertEquals(d, (311+312+321+322), 0.0000001); assertEquals(d, (311+312+321+322), 0.0000001);
} }


public final void testMaxFunctionArguments_bug46729(){
@Test
public final void bug46729_testMaxFunctionArguments(){
String[] func = {"COUNT", "AVERAGE", "MAX", "MIN", "OR", "SUBTOTAL", "SKEW"}; String[] func = {"COUNT", "AVERAGE", "MAX", "MIN", "OR", "SUBTOTAL", "SKEW"};


SpreadsheetVersion ssVersion = _testDataProvider.getSpreadsheetVersion(); SpreadsheetVersion ssVersion = _testDataProvider.getSpreadsheetVersion();
return fmla.toString(); return fmla.toString();
} }


public final void testAutoSize_bug506819() {
@Test
public final void bug506819_testAutoSize() {
Workbook wb = _testDataProvider.createWorkbook(); Workbook wb = _testDataProvider.createWorkbook();
Sheet sheet = wb.createSheet("Sheet1"); Sheet sheet = wb.createSheet("Sheet1");
Row row = sheet.createRow(0); Row row = sheet.createRow(0);
/** /**
* CreateFreezePane column/row order check * CreateFreezePane column/row order check
*/ */
public void test49381() throws Exception {
@Test
public void bug49381() throws Exception {
Workbook wb = _testDataProvider.createWorkbook(); Workbook wb = _testDataProvider.createWorkbook();
int colSplit = 1; int colSplit = 1;
int rowSplit = 2; int rowSplit = 2;

Двоични данни
test-data/spreadsheet/xor-encryption-abc.xls Целия файл


Loading…
Отказ
Запис