aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org/apache
diff options
context:
space:
mode:
Diffstat (limited to 'src/testcases/org/apache')
-rw-r--r--src/testcases/org/apache/poi/hssf/dev/BaseTestIteratingXLS.java8
-rw-r--r--src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java11
-rw-r--r--src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java3
-rw-r--r--src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java14
-rw-r--r--src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java12
-rw-r--r--src/testcases/org/apache/poi/hssf/dev/TestReSave.java12
-rw-r--r--src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java4
-rw-r--r--src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java1169
-rw-r--r--src/testcases/org/apache/poi/util/NullPrintStream.java88
9 files changed, 687 insertions, 634 deletions
diff --git a/src/testcases/org/apache/poi/hssf/dev/BaseTestIteratingXLS.java b/src/testcases/org/apache/poi/hssf/dev/BaseTestIteratingXLS.java
index a8b30a001c..262aafdb3b 100644
--- a/src/testcases/org/apache/poi/hssf/dev/BaseTestIteratingXLS.java
+++ b/src/testcases/org/apache/poi/hssf/dev/BaseTestIteratingXLS.java
@@ -20,7 +20,6 @@ import static org.junit.Assert.assertNotNull;
import java.io.File;
import java.io.FileInputStream;
-import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -29,7 +28,6 @@ import java.util.Map;
import org.apache.poi.POIDataSamples;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.util.NullOutputStream;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -46,8 +44,6 @@ import org.junit.runners.Parameterized.Parameters;
*/
@RunWith(Parameterized.class)
public abstract class BaseTestIteratingXLS {
- protected static final OutputStream NULL_OUTPUT_STREAM = new NullOutputStream();
-
@Rule
public ExpectedException thrown = ExpectedException.none();
@@ -74,9 +70,9 @@ public abstract class BaseTestIteratingXLS {
assertNotNull("Did not find any xls files in directory " + dir, files);
for(String file : files) {
- list.add(new Object[] { new File(dir, file) });
+ list.add(new Object[]{new File(dir, file)});
+ }
}
- }
@Parameter
public File file;
diff --git a/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java b/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java
index 12d7c6fbaf..406266d902 100644
--- a/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java
+++ b/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java
@@ -23,6 +23,7 @@ import java.io.InputStream;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.hssf.OldExcelFormatException;
import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.util.NullOutputStream;
import org.apache.poi.util.RecordFormatException;
import org.junit.BeforeClass;
@@ -30,10 +31,10 @@ public class TestBiffDrawingToXml extends BaseTestIteratingXLS {
@BeforeClass
public static void setup() {
EXCLUDED.clear();
- EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
+ EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
- EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
- EXCLUDED.put("password.xls", EncryptedDocumentException.class);
+ EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
+ EXCLUDED.put("password.xls", EncryptedDocumentException.class);
EXCLUDED.put("46904.xls", OldExcelFormatException.class);
EXCLUDED.put("59074.xls", OldExcelFormatException.class);
EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class); // Biff 2 / Excel 2, pre-OLE2
@@ -47,11 +48,11 @@ public class TestBiffDrawingToXml extends BaseTestIteratingXLS {
EXCLUDED.put("61300.xls", RecordFormatException.class);
EXCLUDED.put("64130.xls", OldExcelFormatException.class); // BIFF 5
}
-
+
@Override
void runOneFile(File pFile) throws Exception {
try (InputStream wb = new FileInputStream(pFile)) {
- BiffDrawingToXml.writeToFile(NULL_OUTPUT_STREAM, wb, false, new String[0]);
+ BiffDrawingToXml.writeToFile(new NullOutputStream(), wb, false, new String[0]);
}
}
}
diff --git a/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java b/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java
index d4fd62fa99..75adb444a4 100644
--- a/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java
+++ b/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java
@@ -28,6 +28,7 @@ import org.apache.poi.hssf.OldExcelFormatException;
import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.NullOutputStream;
import org.apache.poi.util.RecordFormatException;
import org.junit.BeforeClass;
import org.junit.Ignore;
@@ -62,7 +63,7 @@ public class TestBiffViewer extends BaseTestIteratingXLS {
try (POIFSFileSystem fs = new POIFSFileSystem(fileIn, true);
InputStream is = BiffViewer.getPOIFSInputStream(fs)) {
// use a NullOutputStream to not write the bytes anywhere for best runtime
- PrintWriter dummy = new PrintWriter(new OutputStreamWriter(NULL_OUTPUT_STREAM, LocaleUtil.CHARSET_1252));
+ PrintWriter dummy = new PrintWriter(new OutputStreamWriter(new NullOutputStream(), LocaleUtil.CHARSET_1252));
BiffViewer.runBiffViewer(dummy, is, true, true, true, false);
}
}
diff --git a/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java b/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java
index d32e0b71eb..20a7a635c9 100644
--- a/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java
+++ b/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java
@@ -23,7 +23,7 @@ import java.io.PrintStream;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.hssf.OldExcelFormatException;
import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.NullPrintStream;
import org.apache.poi.util.RecordFormatException;
import org.junit.BeforeClass;
@@ -31,10 +31,10 @@ public class TestEFBiffViewer extends BaseTestIteratingXLS {
@BeforeClass
public static void setup() {
EXCLUDED.clear();
- EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
+ EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
- EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
- EXCLUDED.put("password.xls", EncryptedDocumentException.class);
+ EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
+ EXCLUDED.put("password.xls", EncryptedDocumentException.class);
EXCLUDED.put("46904.xls", OldExcelFormatException.class);
EXCLUDED.put("59074.xls", OldExcelFormatException.class);
EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class); // Biff 2 / Excel 2, pre-OLE2
@@ -45,17 +45,17 @@ public class TestEFBiffViewer extends BaseTestIteratingXLS {
EXCLUDED.put("testEXCEL_95.xls", OldExcelFormatException.class); // Biff 5 / Excel 95
EXCLUDED.put("43493.xls", RecordInputStream.LeftoverDataException.class); // HSSFWorkbook cannot open it as well
EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
- EXCLUDED.put("XRefCalc.xls", RuntimeException.class); // "Buffer overrun"
+ // EXCLUDED.put("XRefCalc.xls", RuntimeException.class); // "Buffer overrun"
EXCLUDED.put("61300.xls", RecordFormatException.class);
EXCLUDED.put("64130.xls", OldExcelFormatException.class); //Biff 5
}
-
+
@Override
void runOneFile(File fileIn) throws IOException {
PrintStream save = System.out;
try {
// redirect standard out during the test to avoid spamming the console with output
- System.setOut(new PrintStream(NULL_OUTPUT_STREAM,true,LocaleUtil.CHARSET_1252.name()));
+ System.setOut(new NullPrintStream());
EFBiffViewer.main(new String[] { fileIn.getAbsolutePath() });
} finally {
diff --git a/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java b/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java
index b922230994..a3eae963c8 100644
--- a/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java
+++ b/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java
@@ -24,7 +24,7 @@ import java.io.PrintStream;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.hssf.OldExcelFormatException;
import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.NullPrintStream;
import org.apache.poi.util.RecordFormatException;
import org.junit.BeforeClass;
@@ -32,10 +32,10 @@ public class TestFormulaViewer extends BaseTestIteratingXLS {
@BeforeClass
public static void setup() {
EXCLUDED.clear();
- EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
+ EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
- EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
- EXCLUDED.put("password.xls", EncryptedDocumentException.class);
+ EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
+ EXCLUDED.put("password.xls", EncryptedDocumentException.class);
EXCLUDED.put("46904.xls", OldExcelFormatException.class);
EXCLUDED.put("59074.xls", OldExcelFormatException.class);
EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class); // Biff 2 / Excel 2, pre-OLE2
@@ -49,13 +49,13 @@ public class TestFormulaViewer extends BaseTestIteratingXLS {
EXCLUDED.put("61300.xls", RecordFormatException.class);
EXCLUDED.put("64130.xls", OldExcelFormatException.class); //Biff 5
}
-
+
@Override
void runOneFile(File fileIn) throws Exception {
PrintStream save = System.out;
try {
// redirect standard out during the test to avoid spamming the console with output
- System.setOut(new PrintStream(NULL_OUTPUT_STREAM,true,LocaleUtil.CHARSET_1252.name()));
+ System.setOut(new NullPrintStream());
FormulaViewer viewer = new FormulaViewer();
viewer.setFile(fileIn.getAbsolutePath());
diff --git a/src/testcases/org/apache/poi/hssf/dev/TestReSave.java b/src/testcases/org/apache/poi/hssf/dev/TestReSave.java
index 890ef1e837..8ab108378f 100644
--- a/src/testcases/org/apache/poi/hssf/dev/TestReSave.java
+++ b/src/testcases/org/apache/poi/hssf/dev/TestReSave.java
@@ -25,7 +25,7 @@ import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.POIDataSamples;
import org.apache.poi.hssf.OldExcelFormatException;
import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.NullPrintStream;
import org.apache.poi.util.RecordFormatException;
import org.junit.BeforeClass;
import org.junit.Ignore;
@@ -35,10 +35,10 @@ public class TestReSave extends BaseTestIteratingXLS {
@BeforeClass
public static void setup() {
EXCLUDED.clear();
- EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
+ EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
- EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
- EXCLUDED.put("password.xls", EncryptedDocumentException.class);
+ EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
+ EXCLUDED.put("password.xls", EncryptedDocumentException.class);
EXCLUDED.put("46904.xls", OldExcelFormatException.class);
EXCLUDED.put("59074.xls", OldExcelFormatException.class);
EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class); // Biff 2 / Excel 2, pre-OLE2
@@ -64,12 +64,12 @@ public class TestReSave extends BaseTestIteratingXLS {
PrintStream save = System.out;
try {
// redirect standard out during the test to avoid spamming the console with output
- System.setOut(new PrintStream(NULL_OUTPUT_STREAM,true,LocaleUtil.CHARSET_1252.name()));
+ System.setOut(new NullPrintStream());
File reSavedFile = new File(fileIn.getParentFile(), fileIn.getName().replace(".xls", "-saved.xls"));
try {
ReSave.main(new String[] { fileIn.getAbsolutePath() });
-
+
// also try BiffViewer on the saved file
new TestBiffViewer().runOneFile(reSavedFile);
diff --git a/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java b/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java
index 934eb5b89d..3a1b9bb2fe 100644
--- a/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java
+++ b/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java
@@ -21,7 +21,7 @@ import java.io.IOException;
import java.io.PrintStream;
import org.apache.poi.hssf.OldExcelFormatException;
-import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.NullPrintStream;
import org.apache.poi.util.RecordFormatException;
import org.junit.BeforeClass;
@@ -46,7 +46,7 @@ public class TestRecordLister extends BaseTestIteratingXLS {
PrintStream save = System.out;
try {
// redirect standard out during the test to avoid spamming the console with output
- System.setOut(new PrintStream(NULL_OUTPUT_STREAM,true,LocaleUtil.CHARSET_1252.name()));
+ System.setOut(new NullPrintStream());
RecordLister viewer = new RecordLister();
viewer.setFile(fileIn.getAbsolutePath());
diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java
index 6ab7dd52d1..d040cf216f 100644
--- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java
+++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java
@@ -26,8 +26,6 @@ import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ConcurrentModificationException;
@@ -39,8 +37,9 @@ import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
import org.apache.poi.ss.util.CellAddress;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.NullOutputStream;
-import org.apache.poi.util.TempFile;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
public abstract class BaseTestWorkbook {
@@ -49,21 +48,25 @@ public abstract class BaseTestWorkbook {
protected BaseTestWorkbook(ITestDataProvider testDataProvider) {
_testDataProvider = testDataProvider;
}
-
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+
@Test
public void sheetIterator_forEach() throws IOException {
- final Workbook wb = _testDataProvider.createWorkbook();
- wb.createSheet("Sheet0");
- wb.createSheet("Sheet1");
- wb.createSheet("Sheet2");
- int i = 0;
- for (Sheet sh : wb) {
- assertEquals("Sheet"+i, sh.getSheetName());
- i++;
+ try (Workbook wb = _testDataProvider.createWorkbook()) {
+ wb.createSheet("Sheet0");
+ wb.createSheet("Sheet1");
+ wb.createSheet("Sheet2");
+ int i = 0;
+ for (Sheet sh : wb) {
+ assertEquals("Sheet" + i, sh.getSheetName());
+ i++;
+ }
}
- wb.close();
}
-
+
/**
* Expected ConcurrentModificationException:
* should not be able to advance an iterator when the
@@ -71,23 +74,20 @@ public abstract class BaseTestWorkbook {
*/
@Test(expected=ConcurrentModificationException.class)
public void sheetIterator_sheetsReordered() throws IOException {
- final Workbook wb = _testDataProvider.createWorkbook();
- wb.createSheet("Sheet0");
- wb.createSheet("Sheet1");
- wb.createSheet("Sheet2");
-
- Iterator<Sheet> it = wb.sheetIterator();
- it.next();
- wb.setSheetOrder("Sheet2", 1);
-
- // Iterator order should be fixed when iterator is created
- try {
+ try (Workbook wb = _testDataProvider.createWorkbook()) {
+ wb.createSheet("Sheet0");
+ wb.createSheet("Sheet1");
+ wb.createSheet("Sheet2");
+
+ Iterator<Sheet> it = wb.sheetIterator();
+ it.next();
+ wb.setSheetOrder("Sheet2", 1);
+
+ // Iterator order should be fixed when iterator is created
assertEquals("Sheet1", it.next().getSheetName());
- } finally {
- wb.close();
}
}
-
+
/**
* Expected ConcurrentModificationException:
* should not be able to advance an iterator when the
@@ -95,140 +95,134 @@ public abstract class BaseTestWorkbook {
*/
@Test(expected=ConcurrentModificationException.class)
public void sheetIterator_sheetRemoved() throws IOException {
- final Workbook wb = _testDataProvider.createWorkbook();
- wb.createSheet("Sheet0");
- wb.createSheet("Sheet1");
- wb.createSheet("Sheet2");
-
- Iterator<Sheet> it = wb.sheetIterator();
- wb.removeSheetAt(1);
-
- // Iterator order should be fixed when iterator is created
- try {
+ try (Workbook wb = _testDataProvider.createWorkbook()) {
+ wb.createSheet("Sheet0");
+ wb.createSheet("Sheet1");
+ wb.createSheet("Sheet2");
+
+ Iterator<Sheet> it = wb.sheetIterator();
+ wb.removeSheetAt(1);
+
+ // Iterator order should be fixed when iterator is created
it.next();
- } finally {
- wb.close();
}
}
-
+
/**
* Expected UnsupportedOperationException:
* should not be able to remove sheets from the sheet iterator
*/
@Test(expected=UnsupportedOperationException.class)
public void sheetIterator_remove() throws IOException {
- final Workbook wb = _testDataProvider.createWorkbook();
- wb.createSheet("Sheet0");
-
- Iterator<Sheet> it = wb.sheetIterator();
- it.next(); //Sheet0
- try {
+ try (Workbook wb = _testDataProvider.createWorkbook()) {
+ wb.createSheet("Sheet0");
+
+ Iterator<Sheet> it = wb.sheetIterator();
+ it.next(); //Sheet0
it.remove();
- } finally {
- wb.close();
}
}
@Test
public void createSheet() throws IOException {
- Workbook wb = _testDataProvider.createWorkbook();
- assertEquals(0, wb.getNumberOfSheets());
-
- //getting a sheet by invalid index or non-existing name
- assertNull(wb.getSheet("Sheet1"));
- try {
- wb.getSheetAt(0);
- fail("should have thrown exceptiuon due to invalid sheet index");
- } catch (IllegalArgumentException e) {
- // expected during successful test
- // no negative index in the range message
- assertFalse(e.getMessage().contains("-1"));
- }
+ try (Workbook wb = _testDataProvider.createWorkbook()) {
+ assertEquals(0, wb.getNumberOfSheets());
- Sheet sheet0 = wb.createSheet();
- Sheet sheet1 = wb.createSheet();
- assertEquals("Sheet0", sheet0.getSheetName());
- assertEquals("Sheet1", sheet1.getSheetName());
- assertEquals(2, wb.getNumberOfSheets());
-
- //fetching sheets by name is case-insensitive
- Sheet originalSheet = wb.createSheet("Sheet3");
- Sheet fetchedSheet = wb.getSheet("sheet3");
- if (fetchedSheet == null) {
- fail("Identified bug 44892");
- }
- assertEquals("Sheet3", fetchedSheet.getSheetName());
- assertEquals(3, wb.getNumberOfSheets());
- assertSame(originalSheet, fetchedSheet);
- try {
- wb.createSheet("sHeeT3");
- fail("should have thrown exceptiuon due to duplicate sheet name");
- } catch (IllegalArgumentException e) {
- // expected during successful test
- assertEquals("The workbook already contains a sheet named 'sHeeT3'", e.getMessage());
- }
+ //getting a sheet by invalid index or non-existing name
+ assertNull(wb.getSheet("Sheet1"));
+ try {
+ wb.getSheetAt(0);
+ fail("should have thrown exceptiuon due to invalid sheet index");
+ } catch (IllegalArgumentException e) {
+ // expected during successful test
+ // no negative index in the range message
+ assertFalse(e.getMessage().contains("-1"));
+ }
- //names cannot be blank or contain any of /\*?[]
- String[] invalidNames = {"", "Sheet/", "Sheet\\",
- "Sheet?", "Sheet*", "Sheet[", "Sheet]", "'Sheet'",
- "My:Sheet"};
- for (String sheetName : invalidNames) {
+ Sheet sheet0 = wb.createSheet();
+ Sheet sheet1 = wb.createSheet();
+ assertEquals("Sheet0", sheet0.getSheetName());
+ assertEquals("Sheet1", sheet1.getSheetName());
+ assertEquals(2, wb.getNumberOfSheets());
+
+ //fetching sheets by name is case-insensitive
+ Sheet originalSheet = wb.createSheet("Sheet3");
+ Sheet fetchedSheet = wb.getSheet("sheet3");
+ if (fetchedSheet == null) {
+ fail("Identified bug 44892");
+ }
+ assertEquals("Sheet3", fetchedSheet.getSheetName());
+ assertEquals(3, wb.getNumberOfSheets());
+ assertSame(originalSheet, fetchedSheet);
try {
- wb.createSheet(sheetName);
- fail("should have thrown exception due to invalid sheet name: " + sheetName);
+ wb.createSheet("sHeeT3");
+ fail("should have thrown exceptiuon due to duplicate sheet name");
} catch (IllegalArgumentException e) {
// expected during successful test
+ assertEquals("The workbook already contains a sheet named 'sHeeT3'", e.getMessage());
}
- }
- //still have 3 sheets
- assertEquals(3, wb.getNumberOfSheets());
-
- //change the name of the 3rd sheet
- wb.setSheetName(2, "I changed!");
-
- //try to assign an invalid name to the 2nd sheet
- try {
- wb.setSheetName(1, "[I'm invalid]");
- fail("should have thrown exceptiuon due to invalid sheet name");
- } catch (IllegalArgumentException e) {
- // expected during successful test
- }
- //try to assign an invalid name to the 2nd sheet
- try {
- wb.createSheet(null);
- fail("should have thrown exceptiuon due to invalid sheet name");
- } catch (IllegalArgumentException e) {
- // expected during successful test
- }
+ //names cannot be blank or contain any of /\*?[]
+ String[] invalidNames = {"", "Sheet/", "Sheet\\",
+ "Sheet?", "Sheet*", "Sheet[", "Sheet]", "'Sheet'",
+ "My:Sheet"};
+ for (String sheetName : invalidNames) {
+ try {
+ wb.createSheet(sheetName);
+ fail("should have thrown exception due to invalid sheet name: " + sheetName);
+ } catch (IllegalArgumentException e) {
+ // expected during successful test
+ }
+ }
+ //still have 3 sheets
+ assertEquals(3, wb.getNumberOfSheets());
- try {
- wb.setSheetName(2, null);
+ //change the name of the 3rd sheet
+ wb.setSheetName(2, "I changed!");
- fail("should have thrown exceptiuon due to invalid sheet name");
- } catch (IllegalArgumentException e) {
- // expected during successful test
- }
+ //try to assign an invalid name to the 2nd sheet
+ try {
+ wb.setSheetName(1, "[I'm invalid]");
+ fail("should have thrown exceptiuon due to invalid sheet name");
+ } catch (IllegalArgumentException e) {
+ // expected during successful test
+ }
+
+ //try to assign an invalid name to the 2nd sheet
+ try {
+ wb.createSheet(null);
+ fail("should have thrown exceptiuon due to invalid sheet name");
+ } catch (IllegalArgumentException e) {
+ // expected during successful test
+ }
- //check
- assertEquals(0, wb.getSheetIndex("sheet0"));
- assertEquals(1, wb.getSheetIndex("sheet1"));
- assertEquals(2, wb.getSheetIndex("I changed!"));
+ try {
+ wb.setSheetName(2, null);
- assertSame(sheet0, wb.getSheet("sheet0"));
- assertSame(sheet1, wb.getSheet("sheet1"));
- assertSame(originalSheet, wb.getSheet("I changed!"));
- assertNull(wb.getSheet("unknown"));
+ fail("should have thrown exceptiuon due to invalid sheet name");
+ } catch (IllegalArgumentException e) {
+ // expected during successful test
+ }
- //serialize and read again
- Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb);
- wb.close();
- assertEquals(3, wb2.getNumberOfSheets());
- assertEquals(0, wb2.getSheetIndex("sheet0"));
- assertEquals(1, wb2.getSheetIndex("sheet1"));
- assertEquals(2, wb2.getSheetIndex("I changed!"));
- wb2.close();
+ //check
+ assertEquals(0, wb.getSheetIndex("sheet0"));
+ assertEquals(1, wb.getSheetIndex("sheet1"));
+ assertEquals(2, wb.getSheetIndex("I changed!"));
+
+ assertSame(sheet0, wb.getSheet("sheet0"));
+ assertSame(sheet1, wb.getSheet("sheet1"));
+ assertSame(originalSheet, wb.getSheet("I changed!"));
+ assertNull(wb.getSheet("unknown"));
+
+ //serialize and read again
+ try (Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb)) {
+ assertEquals(3, wb2.getNumberOfSheets());
+ assertEquals(0, wb2.getSheetIndex("sheet0"));
+ assertEquals(1, wb2.getSheetIndex("sheet1"));
+ assertEquals(2, wb2.getSheetIndex("I changed!"));
+ }
+ }
}
/**
@@ -241,41 +235,42 @@ public abstract class BaseTestWorkbook {
*/
@Test
public void createSheetWithLongNames() throws IOException {
- Workbook wb1 = _testDataProvider.createWorkbook();
-
- String sheetName1 = "My very long sheet name which is longer than 31 chars";
- String truncatedSheetName1 = sheetName1.substring(0, 31);
- Sheet sh1 = wb1.createSheet(sheetName1);
- assertEquals(truncatedSheetName1, sh1.getSheetName());
- assertSame(sh1, wb1.getSheet(truncatedSheetName1));
- // now via wb.setSheetName
- wb1.setSheetName(0, sheetName1);
- assertEquals(truncatedSheetName1, sh1.getSheetName());
- assertSame(sh1, wb1.getSheet(truncatedSheetName1));
-
- String sheetName2 = "My very long sheet name which is longer than 31 chars " +
- "and sheetName2.substring(0, 31) == sheetName1.substring(0, 31)";
- try {
- /*Sheet sh2 =*/ wb1.createSheet(sheetName2);
- fail("expected exception");
- } catch (IllegalArgumentException e) {
- // expected during successful test
- assertEquals("The workbook already contains a sheet named 'My very long sheet name which is longer than 31 chars and sheetName2.substring(0, 31) == sheetName1.substring(0, 31)'", e.getMessage());
- }
+ try (Workbook wb1 = _testDataProvider.createWorkbook()) {
+
+ String sheetName1 = "My very long sheet name which is longer than 31 chars";
+ String truncatedSheetName1 = sheetName1.substring(0, 31);
+ Sheet sh1 = wb1.createSheet(sheetName1);
+ assertEquals(truncatedSheetName1, sh1.getSheetName());
+ assertSame(sh1, wb1.getSheet(truncatedSheetName1));
+ // now via wb.setSheetName
+ wb1.setSheetName(0, sheetName1);
+ assertEquals(truncatedSheetName1, sh1.getSheetName());
+ assertSame(sh1, wb1.getSheet(truncatedSheetName1));
+
+ String sheetName2 = "My very long sheet name which is longer than 31 chars " +
+ "and sheetName2.substring(0, 31) == sheetName1.substring(0, 31)";
+ try {
+ /*Sheet sh2 =*/
+ wb1.createSheet(sheetName2);
+ fail("expected exception");
+ } catch (IllegalArgumentException e) {
+ // expected during successful test
+ assertEquals("The workbook already contains a sheet named 'My very long sheet name which is longer than 31 chars and sheetName2.substring(0, 31) == sheetName1.substring(0, 31)'", e.getMessage());
+ }
- String sheetName3 = "POI allows creating sheets with names longer than 31 characters";
- String truncatedSheetName3 = sheetName3.substring(0, 31);
- Sheet sh3 = wb1.createSheet(sheetName3);
- assertEquals(truncatedSheetName3, sh3.getSheetName());
- assertSame(sh3, wb1.getSheet(truncatedSheetName3));
-
- //serialize and read again
- Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1);
- wb1.close();
- assertEquals(2, wb2.getNumberOfSheets());
- assertEquals(0, wb2.getSheetIndex(truncatedSheetName1));
- assertEquals(1, wb2.getSheetIndex(truncatedSheetName3));
- wb2.close();
+ String sheetName3 = "POI allows creating sheets with names longer than 31 characters";
+ String truncatedSheetName3 = sheetName3.substring(0, 31);
+ Sheet sh3 = wb1.createSheet(sheetName3);
+ assertEquals(truncatedSheetName3, sh3.getSheetName());
+ assertSame(sh3, wb1.getSheet(truncatedSheetName3));
+
+ //serialize and read again
+ try (Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1)) {
+ assertEquals(2, wb2.getNumberOfSheets());
+ assertEquals(0, wb2.getSheetIndex(truncatedSheetName1));
+ assertEquals(1, wb2.getSheetIndex(truncatedSheetName3));
+ }
+ }
}
@Test
@@ -339,225 +334,222 @@ public abstract class BaseTestWorkbook {
Workbook wbr = _testDataProvider.writeOutAndReadBack(wb);
sheet = wbr.getSheet("new sheet");
assertEquals(new CellAddress("E11"), sheet.getActiveCell());
-
- //wbr.write(new FileOutputStream("c:/temp/yyy." + _testDataProvider.getStandardFileNameExtension()));
}
}
@Test
public void defaultValues() throws IOException {
- Workbook b = _testDataProvider.createWorkbook();
- assertEquals(0, b.getActiveSheetIndex());
- assertEquals(0, b.getFirstVisibleTab());
- assertEquals(0, b.getNumberOfNames());
- assertEquals(0, b.getNumberOfSheets());
- b.close();
+ try (Workbook b = _testDataProvider.createWorkbook()) {
+ assertEquals(0, b.getActiveSheetIndex());
+ assertEquals(0, b.getFirstVisibleTab());
+ assertEquals(0, b.getNumberOfNames());
+ assertEquals(0, b.getNumberOfSheets());
+ }
}
@Test
public void sheetSelection() throws IOException {
- Workbook b = _testDataProvider.createWorkbook();
- b.createSheet("Sheet One");
- b.createSheet("Sheet Two");
- b.setActiveSheet(1);
- b.setSelectedTab(1);
- b.setFirstVisibleTab(1);
- assertEquals(1, b.getActiveSheetIndex());
- assertEquals(1, b.getFirstVisibleTab());
- b.close();
+ try (Workbook b = _testDataProvider.createWorkbook()) {
+ b.createSheet("Sheet One");
+ b.createSheet("Sheet Two");
+ b.setActiveSheet(1);
+ b.setSelectedTab(1);
+ b.setFirstVisibleTab(1);
+ assertEquals(1, b.getActiveSheetIndex());
+ assertEquals(1, b.getFirstVisibleTab());
+ }
}
@Test
public void printArea() throws IOException {
- Workbook workbook = _testDataProvider.createWorkbook();
- Sheet sheet1 = workbook.createSheet("Test Print Area");
- String sheetName1 = sheet1.getSheetName();
-
- // workbook.setPrintArea(0, reference);
- workbook.setPrintArea(0, 1, 5, 4, 9);
- String retrievedPrintArea = workbook.getPrintArea(0);
- assertEquals("'" + sheetName1 + "'!$B$5:$F$10", retrievedPrintArea);
-
- String reference = "$A$1:$B$1";
- workbook.setPrintArea(0, reference);
- retrievedPrintArea = workbook.getPrintArea(0);
- assertEquals("'" + sheetName1 + "'!" + reference, retrievedPrintArea);
-
- workbook.removePrintArea(0);
- assertNull(workbook.getPrintArea(0));
- workbook.close();
+ try (Workbook workbook = _testDataProvider.createWorkbook()) {
+ Sheet sheet1 = workbook.createSheet("Test Print Area");
+ String sheetName1 = sheet1.getSheetName();
+
+ // workbook.setPrintArea(0, reference);
+ workbook.setPrintArea(0, 1, 5, 4, 9);
+ String retrievedPrintArea = workbook.getPrintArea(0);
+ assertEquals("'" + sheetName1 + "'!$B$5:$F$10", retrievedPrintArea);
+
+ String reference = "$A$1:$B$1";
+ workbook.setPrintArea(0, reference);
+ retrievedPrintArea = workbook.getPrintArea(0);
+ assertEquals("'" + sheetName1 + "'!" + reference, retrievedPrintArea);
+
+ workbook.removePrintArea(0);
+ assertNull(workbook.getPrintArea(0));
+ }
}
@Test
public void getSetActiveSheet() throws IOException {
- Workbook workbook = _testDataProvider.createWorkbook();
- assertEquals(0, workbook.getActiveSheetIndex());
-
- workbook.createSheet("sheet1");
- workbook.createSheet("sheet2");
- workbook.createSheet("sheet3");
- // set second sheet
- workbook.setActiveSheet(1);
- // test if second sheet is set up
- assertEquals(1, workbook.getActiveSheetIndex());
-
- workbook.setActiveSheet(0);
- // test if second sheet is set up
- assertEquals(0, workbook.getActiveSheetIndex());
- workbook.close();
+ try (Workbook workbook = _testDataProvider.createWorkbook()) {
+ assertEquals(0, workbook.getActiveSheetIndex());
+
+ workbook.createSheet("sheet1");
+ workbook.createSheet("sheet2");
+ workbook.createSheet("sheet3");
+ // set second sheet
+ workbook.setActiveSheet(1);
+ // test if second sheet is set up
+ assertEquals(1, workbook.getActiveSheetIndex());
+
+ workbook.setActiveSheet(0);
+ // test if second sheet is set up
+ assertEquals(0, workbook.getActiveSheetIndex());
+ }
}
@Test
public void setSheetOrder() throws IOException {
- Workbook wb = _testDataProvider.createWorkbook();
-
- for (int i=0; i < 10; i++) {
- wb.createSheet("Sheet " + i);
- }
+ try (Workbook wb = _testDataProvider.createWorkbook()) {
- // Check the initial order
- assertEquals(0, wb.getSheetIndex("Sheet 0"));
- assertEquals(1, wb.getSheetIndex("Sheet 1"));
- assertEquals(2, wb.getSheetIndex("Sheet 2"));
- assertEquals(3, wb.getSheetIndex("Sheet 3"));
- assertEquals(4, wb.getSheetIndex("Sheet 4"));
- assertEquals(5, wb.getSheetIndex("Sheet 5"));
- assertEquals(6, wb.getSheetIndex("Sheet 6"));
- assertEquals(7, wb.getSheetIndex("Sheet 7"));
- assertEquals(8, wb.getSheetIndex("Sheet 8"));
- assertEquals(9, wb.getSheetIndex("Sheet 9"));
-
- // check active sheet
- assertEquals(0, wb.getActiveSheetIndex());
-
- // Change
- wb.setSheetOrder("Sheet 6", 0);
- assertEquals(1, wb.getActiveSheetIndex());
- wb.setSheetOrder("Sheet 3", 7);
- wb.setSheetOrder("Sheet 1", 9);
-
- // now the first sheet is at index 1
- assertEquals(1, wb.getActiveSheetIndex());
-
- // Check they're currently right
- assertEquals(0, wb.getSheetIndex("Sheet 6"));
- assertEquals(1, wb.getSheetIndex("Sheet 0"));
- assertEquals(2, wb.getSheetIndex("Sheet 2"));
- assertEquals(3, wb.getSheetIndex("Sheet 4"));
- assertEquals(4, wb.getSheetIndex("Sheet 5"));
- assertEquals(5, wb.getSheetIndex("Sheet 7"));
- assertEquals(6, wb.getSheetIndex("Sheet 3"));
- assertEquals(7, wb.getSheetIndex("Sheet 8"));
- assertEquals(8, wb.getSheetIndex("Sheet 9"));
- assertEquals(9, wb.getSheetIndex("Sheet 1"));
-
- Workbook wbr = _testDataProvider.writeOutAndReadBack(wb);
- wb.close();
+ for (int i = 0; i < 10; i++) {
+ wb.createSheet("Sheet " + i);
+ }
- assertEquals(0, wbr.getSheetIndex("Sheet 6"));
- assertEquals(1, wbr.getSheetIndex("Sheet 0"));
- assertEquals(2, wbr.getSheetIndex("Sheet 2"));
- assertEquals(3, wbr.getSheetIndex("Sheet 4"));
- assertEquals(4, wbr.getSheetIndex("Sheet 5"));
- assertEquals(5, wbr.getSheetIndex("Sheet 7"));
- assertEquals(6, wbr.getSheetIndex("Sheet 3"));
- assertEquals(7, wbr.getSheetIndex("Sheet 8"));
- assertEquals(8, wbr.getSheetIndex("Sheet 9"));
- assertEquals(9, wbr.getSheetIndex("Sheet 1"));
-
- assertEquals(1, wb.getActiveSheetIndex());
-
- // Now get the index by the sheet, not the name
- for(int i=0; i<10; i++) {
- Sheet s = wbr.getSheetAt(i);
- assertEquals(i, wbr.getSheetIndex(s));
+ // Check the initial order
+ assertEquals(0, wb.getSheetIndex("Sheet 0"));
+ assertEquals(1, wb.getSheetIndex("Sheet 1"));
+ assertEquals(2, wb.getSheetIndex("Sheet 2"));
+ assertEquals(3, wb.getSheetIndex("Sheet 3"));
+ assertEquals(4, wb.getSheetIndex("Sheet 4"));
+ assertEquals(5, wb.getSheetIndex("Sheet 5"));
+ assertEquals(6, wb.getSheetIndex("Sheet 6"));
+ assertEquals(7, wb.getSheetIndex("Sheet 7"));
+ assertEquals(8, wb.getSheetIndex("Sheet 8"));
+ assertEquals(9, wb.getSheetIndex("Sheet 9"));
+
+ // check active sheet
+ assertEquals(0, wb.getActiveSheetIndex());
+
+ // Change
+ wb.setSheetOrder("Sheet 6", 0);
+ assertEquals(1, wb.getActiveSheetIndex());
+ wb.setSheetOrder("Sheet 3", 7);
+ wb.setSheetOrder("Sheet 1", 9);
+
+ // now the first sheet is at index 1
+ assertEquals(1, wb.getActiveSheetIndex());
+
+ // Check they're currently right
+ assertEquals(0, wb.getSheetIndex("Sheet 6"));
+ assertEquals(1, wb.getSheetIndex("Sheet 0"));
+ assertEquals(2, wb.getSheetIndex("Sheet 2"));
+ assertEquals(3, wb.getSheetIndex("Sheet 4"));
+ assertEquals(4, wb.getSheetIndex("Sheet 5"));
+ assertEquals(5, wb.getSheetIndex("Sheet 7"));
+ assertEquals(6, wb.getSheetIndex("Sheet 3"));
+ assertEquals(7, wb.getSheetIndex("Sheet 8"));
+ assertEquals(8, wb.getSheetIndex("Sheet 9"));
+ assertEquals(9, wb.getSheetIndex("Sheet 1"));
+
+ try (Workbook wbr = _testDataProvider.writeOutAndReadBack(wb)) {
+
+ assertEquals(0, wbr.getSheetIndex("Sheet 6"));
+ assertEquals(1, wbr.getSheetIndex("Sheet 0"));
+ assertEquals(2, wbr.getSheetIndex("Sheet 2"));
+ assertEquals(3, wbr.getSheetIndex("Sheet 4"));
+ assertEquals(4, wbr.getSheetIndex("Sheet 5"));
+ assertEquals(5, wbr.getSheetIndex("Sheet 7"));
+ assertEquals(6, wbr.getSheetIndex("Sheet 3"));
+ assertEquals(7, wbr.getSheetIndex("Sheet 8"));
+ assertEquals(8, wbr.getSheetIndex("Sheet 9"));
+ assertEquals(9, wbr.getSheetIndex("Sheet 1"));
+
+ assertEquals(1, wb.getActiveSheetIndex());
+
+ // Now get the index by the sheet, not the name
+ for (int i = 0; i < 10; i++) {
+ Sheet s = wbr.getSheetAt(i);
+ assertEquals(i, wbr.getSheetIndex(s));
+ }
+ }
}
-
- wbr.close();
}
@Test
public void cloneSheet() throws IOException {
- Workbook book = _testDataProvider.createWorkbook();
- Sheet sheet = book.createSheet("TEST");
- sheet.createRow(0).createCell(0).setCellValue("Test");
- sheet.createRow(1).createCell(0).setCellValue(36.6);
- assertEquals(0, sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 2)));
- assertEquals(1, sheet.addMergedRegion(new CellRangeAddress(2, 3, 0, 2)));
- assertTrue(sheet.isSelected());
-
- Sheet clonedSheet = book.cloneSheet(0);
- assertEquals("TEST (2)", clonedSheet.getSheetName());
- assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
- assertEquals(2, clonedSheet.getNumMergedRegions());
- assertFalse(clonedSheet.isSelected());
-
- //cloned sheet is a deep copy, adding rows or merged regions in the original does not affect the clone
- sheet.createRow(2).createCell(0).setCellValue(1);
- assertEquals(2, sheet.addMergedRegion(new CellRangeAddress(4, 5, 0, 2)));
- assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
- assertEquals(2, clonedSheet.getNumMergedRegions());
-
- clonedSheet.createRow(2).createCell(0).setCellValue(1);
- assertEquals(2, clonedSheet.addMergedRegion(new CellRangeAddress(6, 7, 0, 2)));
- assertEquals(3, clonedSheet.getPhysicalNumberOfRows());
- assertEquals(3, clonedSheet.getNumMergedRegions());
- book.close();
+ try (Workbook book = _testDataProvider.createWorkbook()) {
+ Sheet sheet = book.createSheet("TEST");
+ sheet.createRow(0).createCell(0).setCellValue("Test");
+ sheet.createRow(1).createCell(0).setCellValue(36.6);
+ assertEquals(0, sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 2)));
+ assertEquals(1, sheet.addMergedRegion(new CellRangeAddress(2, 3, 0, 2)));
+ assertTrue(sheet.isSelected());
+
+ Sheet clonedSheet = book.cloneSheet(0);
+ assertEquals("TEST (2)", clonedSheet.getSheetName());
+ assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
+ assertEquals(2, clonedSheet.getNumMergedRegions());
+ assertFalse(clonedSheet.isSelected());
+
+ //cloned sheet is a deep copy, adding rows or merged regions in the original does not affect the clone
+ sheet.createRow(2).createCell(0).setCellValue(1);
+ assertEquals(2, sheet.addMergedRegion(new CellRangeAddress(4, 5, 0, 2)));
+ assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
+ assertEquals(2, clonedSheet.getNumMergedRegions());
+
+ clonedSheet.createRow(2).createCell(0).setCellValue(1);
+ assertEquals(2, clonedSheet.addMergedRegion(new CellRangeAddress(6, 7, 0, 2)));
+ assertEquals(3, clonedSheet.getPhysicalNumberOfRows());
+ assertEquals(3, clonedSheet.getNumMergedRegions());
+ }
}
@Test
public void parentReferences() throws IOException {
- Workbook wb1 = _testDataProvider.createWorkbook();
- Sheet sheet = wb1.createSheet();
- assertSame(wb1, sheet.getWorkbook());
+ try (Workbook wb1 = _testDataProvider.createWorkbook()) {
+ Sheet sheet = wb1.createSheet();
+ assertSame(wb1, sheet.getWorkbook());
- Row row = sheet.createRow(0);
- assertSame(sheet, row.getSheet());
+ Row row = sheet.createRow(0);
+ assertSame(sheet, row.getSheet());
- Cell cell = row.createCell(1);
- assertSame(sheet, cell.getSheet());
- assertSame(row, cell.getRow());
+ Cell cell = row.createCell(1);
+ assertSame(sheet, cell.getSheet());
+ assertSame(row, cell.getRow());
- Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1);
- wb1.close();
- sheet = wb2.getSheetAt(0);
- assertSame(wb2, sheet.getWorkbook());
+ try (Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1)) {
+ wb1.close();
+ sheet = wb2.getSheetAt(0);
+ assertSame(wb2, sheet.getWorkbook());
- row = sheet.getRow(0);
- assertSame(sheet, row.getSheet());
+ row = sheet.getRow(0);
+ assertSame(sheet, row.getSheet());
- cell = row.getCell(1);
- assertSame(sheet, cell.getSheet());
- assertSame(row, cell.getRow());
- wb2.close();
+ cell = row.getCell(1);
+ assertSame(sheet, cell.getSheet());
+ assertSame(row, cell.getRow());
+ }
+ }
}
/**
* Test to validate that replacement for removed setRepeatingRowsAnsColumns() methods
- * is still working correctly
+ * is still working correctly
*/
@Test
public void setRepeatingRowsAnsColumns() throws IOException {
- Workbook wb = _testDataProvider.createWorkbook();
-
- CellRangeAddress cra = new CellRangeAddress(0, 3, 0, 0);
- String expRows = "1:4", expCols = "A:A";
-
-
- Sheet sheet1 = wb.createSheet();
- sheet1.setRepeatingRows(cra);
- sheet1.setRepeatingColumns(cra);
- assertEquals(expRows, sheet1.getRepeatingRows().formatAsString());
- assertEquals(expCols, sheet1.getRepeatingColumns().formatAsString());
-
- //must handle sheets with quotas, see Bugzilla #47294
- Sheet sheet2 = wb.createSheet("My' Sheet");
- sheet2.setRepeatingRows(cra);
- sheet2.setRepeatingColumns(cra);
- assertEquals(expRows, sheet2.getRepeatingRows().formatAsString());
- assertEquals(expCols, sheet2.getRepeatingColumns().formatAsString());
- wb.close();
+ try (Workbook wb = _testDataProvider.createWorkbook()) {
+ CellRangeAddress cra = new CellRangeAddress(0, 3, 0, 0);
+ String expRows = "1:4", expCols = "A:A";
+
+
+ Sheet sheet1 = wb.createSheet();
+ sheet1.setRepeatingRows(cra);
+ sheet1.setRepeatingColumns(cra);
+ assertEquals(expRows, sheet1.getRepeatingRows().formatAsString());
+ assertEquals(expCols, sheet1.getRepeatingColumns().formatAsString());
+
+ //must handle sheets with quotas, see Bugzilla #47294
+ Sheet sheet2 = wb.createSheet("My' Sheet");
+ sheet2.setRepeatingRows(cra);
+ sheet2.setRepeatingColumns(cra);
+ assertEquals(expRows, sheet2.getRepeatingRows().formatAsString());
+ assertEquals(expCols, sheet2.getRepeatingColumns().formatAsString());
+ }
}
/**
@@ -565,73 +557,74 @@ public abstract class BaseTestWorkbook {
*/
@Test
public void unicodeInAll() throws IOException {
- Workbook wb1 = _testDataProvider.createWorkbook();
- CreationHelper factory = wb1.getCreationHelper();
- //Create a unicode dataformat (contains euro symbol)
- DataFormat df = wb1.createDataFormat();
- final String formatStr = "_([$\u20ac-2]\\\\\\ * #,##0.00_);_([$\u20ac-2]\\\\\\ * \\\\\\(#,##0.00\\\\\\);_([$\u20ac-2]\\\\\\ *\\\"\\-\\\\\"??_);_(@_)";
- short fmt = df.getFormat(formatStr);
-
- //Create a unicode sheet name (euro symbol)
- Sheet s = wb1.createSheet("\u20ac");
-
- //Set a unicode header (you guessed it the euro symbol)
- Header h = s.getHeader();
- h.setCenter("\u20ac");
- h.setLeft("\u20ac");
- h.setRight("\u20ac");
-
- //Set a unicode footer
- Footer f = s.getFooter();
- f.setCenter("\u20ac");
- f.setLeft("\u20ac");
- f.setRight("\u20ac");
-
- Row r = s.createRow(0);
- Cell c = r.createCell(1);
- c.setCellValue(12.34);
- c.getCellStyle().setDataFormat(fmt);
-
- /*Cell c2 =*/ r.createCell(2); // TODO - c2 unused but changing next line ('c'->'c2') causes test to fail
- c.setCellValue(factory.createRichTextString("\u20ac"));
-
- Cell c3 = r.createCell(3);
- String formulaString = "TEXT(12.34,\"\u20ac###,##\")";
- c3.setCellFormula(formulaString);
-
- Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1);
- wb1.close();
-
- //Test the sheetname
- s = wb2.getSheet("\u20ac");
- assertNotNull(s);
-
- //Test the header
- h = s.getHeader();
- assertEquals(h.getCenter(), "\u20ac");
- assertEquals(h.getLeft(), "\u20ac");
- assertEquals(h.getRight(), "\u20ac");
-
- //Test the footer
- f = s.getFooter();
- assertEquals(f.getCenter(), "\u20ac");
- assertEquals(f.getLeft(), "\u20ac");
- assertEquals(f.getRight(), "\u20ac");
-
- //Test the dataformat
- r = s.getRow(0);
- c = r.getCell(1);
- df = wb2.createDataFormat();
- assertEquals(formatStr, df.getFormat(c.getCellStyle().getDataFormat()));
-
- //Test the cell string value
- /*c2 =*/ r.getCell(2);
- assertEquals(c.getRichStringCellValue().getString(), "\u20ac");
-
- //Test the cell formula
- c3 = r.getCell(3);
- assertEquals(c3.getCellFormula(), formulaString);
- wb2.close();
+ try (Workbook wb1 = _testDataProvider.createWorkbook()) {
+ CreationHelper factory = wb1.getCreationHelper();
+ //Create a unicode dataformat (contains euro symbol)
+ DataFormat df = wb1.createDataFormat();
+ final String formatStr = "_([$\u20ac-2]\\\\\\ * #,##0.00_);_([$\u20ac-2]\\\\\\ * \\\\\\(#,##0.00\\\\\\);_([$\u20ac-2]\\\\\\ *\\\"\\-\\\\\"??_);_(@_)";
+ short fmt = df.getFormat(formatStr);
+
+ //Create a unicode sheet name (euro symbol)
+ Sheet s = wb1.createSheet("\u20ac");
+
+ //Set a unicode header (you guessed it the euro symbol)
+ Header h = s.getHeader();
+ h.setCenter("\u20ac");
+ h.setLeft("\u20ac");
+ h.setRight("\u20ac");
+
+ //Set a unicode footer
+ Footer f = s.getFooter();
+ f.setCenter("\u20ac");
+ f.setLeft("\u20ac");
+ f.setRight("\u20ac");
+
+ Row r = s.createRow(0);
+ Cell c = r.createCell(1);
+ c.setCellValue(12.34);
+ c.getCellStyle().setDataFormat(fmt);
+
+ /*Cell c2 =*/
+ r.createCell(2); // TODO - c2 unused but changing next line ('c'->'c2') causes test to fail
+ c.setCellValue(factory.createRichTextString("\u20ac"));
+
+ Cell c3 = r.createCell(3);
+ String formulaString = "TEXT(12.34,\"\u20ac###,##\")";
+ c3.setCellFormula(formulaString);
+
+ try (Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1)) {
+ //Test the sheetname
+ s = wb2.getSheet("\u20ac");
+ assertNotNull(s);
+
+ //Test the header
+ h = s.getHeader();
+ assertEquals(h.getCenter(), "\u20ac");
+ assertEquals(h.getLeft(), "\u20ac");
+ assertEquals(h.getRight(), "\u20ac");
+
+ //Test the footer
+ f = s.getFooter();
+ assertEquals(f.getCenter(), "\u20ac");
+ assertEquals(f.getLeft(), "\u20ac");
+ assertEquals(f.getRight(), "\u20ac");
+
+ //Test the dataformat
+ r = s.getRow(0);
+ c = r.getCell(1);
+ df = wb2.createDataFormat();
+ assertEquals(formatStr, df.getFormat(c.getCellStyle().getDataFormat()));
+
+ //Test the cell string value
+ /*c2 =*/
+ r.getCell(2);
+ assertEquals(c.getRichStringCellValue().getString(), "\u20ac");
+
+ //Test the cell formula
+ c3 = r.getCell(3);
+ assertEquals(c3.getCellFormula(), formulaString);
+ }
+ }
}
private Workbook newSetSheetNameTestingWorkbook() {
@@ -671,7 +664,6 @@ public abstract class BaseTestWorkbook {
sh3.createRow(4).createCell(0).setCellValue(5);
sh3.createRow(5).createCell(0).setCellFormula("sale_3");
sh3.createRow(6).createCell(0).setCellFormula("'Testing 47100'!C1");
-
return wb;
}
@@ -682,110 +674,107 @@ public abstract class BaseTestWorkbook {
*/
@Test
public void setSheetName() throws IOException {
-
- Workbook wb1 = newSetSheetNameTestingWorkbook();
-
- Sheet sh1 = wb1.getSheetAt(0);
-
- Name sale_2 = wb1.getName("sale_2");
- Name sale_3 = wb1.getName("sale_3");
- Name sale_4 = wb1.getName("sale_4");
-
- assertEquals("sale_2", sale_2.getNameName());
- assertEquals("'Testing 47100'!$A$1", sale_2.getRefersToFormula());
- assertEquals("sale_3", sale_3.getNameName());
- assertEquals("'Testing 47100'!$B$1", sale_3.getRefersToFormula());
- assertEquals("sale_4", sale_4.getNameName());
- assertEquals("'To be renamed'!$A$3", sale_4.getRefersToFormula());
-
- FormulaEvaluator evaluator = wb1.getCreationHelper().createFormulaEvaluator();
-
- Cell cell0 = sh1.getRow(0).getCell(0);
- Cell cell1 = sh1.getRow(1).getCell(0);
- Cell cell2 = sh1.getRow(2).getCell(0);
-
- assertEquals("SUM('Testing 47100'!A1:C1)", cell0.getCellFormula());
- assertEquals("SUM('Testing 47100'!A1:C1,'To be renamed'!A1:A5)", cell1.getCellFormula());
- assertEquals("sale_2+sale_3+'Testing 47100'!C1", cell2.getCellFormula());
-
- assertEquals(6.0, evaluator.evaluate(cell0).getNumberValue(), 0);
- assertEquals(21.0, evaluator.evaluate(cell1).getNumberValue(), 0);
- assertEquals(6.0, evaluator.evaluate(cell2).getNumberValue(), 0);
-
- wb1.setSheetName(1, "47100 - First");
- wb1.setSheetName(2, "47100 - Second");
-
- assertEquals("sale_2", sale_2.getNameName());
- assertEquals("'47100 - First'!$A$1", sale_2.getRefersToFormula());
- assertEquals("sale_3", sale_3.getNameName());
- assertEquals("'47100 - First'!$B$1", sale_3.getRefersToFormula());
- assertEquals("sale_4", sale_4.getNameName());
- assertEquals("'47100 - Second'!$A$3", sale_4.getRefersToFormula());
-
- assertEquals("SUM('47100 - First'!A1:C1)", cell0.getCellFormula());
- assertEquals("SUM('47100 - First'!A1:C1,'47100 - Second'!A1:A5)", cell1.getCellFormula());
- assertEquals("sale_2+sale_3+'47100 - First'!C1", cell2.getCellFormula());
-
- evaluator.clearAllCachedResultValues();
- assertEquals(6.0, evaluator.evaluate(cell0).getNumberValue(), 0);
- assertEquals(21.0, evaluator.evaluate(cell1).getNumberValue(), 0);
- assertEquals(6.0, evaluator.evaluate(cell2).getNumberValue(), 0);
-
- Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1);
- wb1.close();
-
- sh1 = wb2.getSheetAt(0);
-
- sale_2 = wb2.getName("sale_2");
- sale_3 = wb2.getName("sale_3");
- sale_4 = wb2.getName("sale_4");
-
- cell0 = sh1.getRow(0).getCell(0);
- cell1 = sh1.getRow(1).getCell(0);
- cell2 = sh1.getRow(2).getCell(0);
-
- assertEquals("sale_2", sale_2.getNameName());
- assertEquals("'47100 - First'!$A$1", sale_2.getRefersToFormula());
- assertEquals("sale_3", sale_3.getNameName());
- assertEquals("'47100 - First'!$B$1", sale_3.getRefersToFormula());
- assertEquals("sale_4", sale_4.getNameName());
- assertEquals("'47100 - Second'!$A$3", sale_4.getRefersToFormula());
-
- assertEquals("SUM('47100 - First'!A1:C1)", cell0.getCellFormula());
- assertEquals("SUM('47100 - First'!A1:C1,'47100 - Second'!A1:A5)", cell1.getCellFormula());
- assertEquals("sale_2+sale_3+'47100 - First'!C1", cell2.getCellFormula());
-
- evaluator = wb2.getCreationHelper().createFormulaEvaluator();
- assertEquals(6.0, evaluator.evaluate(cell0).getNumberValue(), 0);
- assertEquals(21.0, evaluator.evaluate(cell1).getNumberValue(), 0);
- assertEquals(6.0, evaluator.evaluate(cell2).getNumberValue(), 0);
- wb2.close();
+ try (Workbook wb1 = newSetSheetNameTestingWorkbook()) {
+ Sheet sh1 = wb1.getSheetAt(0);
+
+ Name sale_2 = wb1.getName("sale_2");
+ Name sale_3 = wb1.getName("sale_3");
+ Name sale_4 = wb1.getName("sale_4");
+
+ assertEquals("sale_2", sale_2.getNameName());
+ assertEquals("'Testing 47100'!$A$1", sale_2.getRefersToFormula());
+ assertEquals("sale_3", sale_3.getNameName());
+ assertEquals("'Testing 47100'!$B$1", sale_3.getRefersToFormula());
+ assertEquals("sale_4", sale_4.getNameName());
+ assertEquals("'To be renamed'!$A$3", sale_4.getRefersToFormula());
+
+ FormulaEvaluator evaluator = wb1.getCreationHelper().createFormulaEvaluator();
+
+ Cell cell0 = sh1.getRow(0).getCell(0);
+ Cell cell1 = sh1.getRow(1).getCell(0);
+ Cell cell2 = sh1.getRow(2).getCell(0);
+
+ assertEquals("SUM('Testing 47100'!A1:C1)", cell0.getCellFormula());
+ assertEquals("SUM('Testing 47100'!A1:C1,'To be renamed'!A1:A5)", cell1.getCellFormula());
+ assertEquals("sale_2+sale_3+'Testing 47100'!C1", cell2.getCellFormula());
+
+ assertEquals(6.0, evaluator.evaluate(cell0).getNumberValue(), 0);
+ assertEquals(21.0, evaluator.evaluate(cell1).getNumberValue(), 0);
+ assertEquals(6.0, evaluator.evaluate(cell2).getNumberValue(), 0);
+
+ wb1.setSheetName(1, "47100 - First");
+ wb1.setSheetName(2, "47100 - Second");
+
+ assertEquals("sale_2", sale_2.getNameName());
+ assertEquals("'47100 - First'!$A$1", sale_2.getRefersToFormula());
+ assertEquals("sale_3", sale_3.getNameName());
+ assertEquals("'47100 - First'!$B$1", sale_3.getRefersToFormula());
+ assertEquals("sale_4", sale_4.getNameName());
+ assertEquals("'47100 - Second'!$A$3", sale_4.getRefersToFormula());
+
+ assertEquals("SUM('47100 - First'!A1:C1)", cell0.getCellFormula());
+ assertEquals("SUM('47100 - First'!A1:C1,'47100 - Second'!A1:A5)", cell1.getCellFormula());
+ assertEquals("sale_2+sale_3+'47100 - First'!C1", cell2.getCellFormula());
+
+ evaluator.clearAllCachedResultValues();
+ assertEquals(6.0, evaluator.evaluate(cell0).getNumberValue(), 0);
+ assertEquals(21.0, evaluator.evaluate(cell1).getNumberValue(), 0);
+ assertEquals(6.0, evaluator.evaluate(cell2).getNumberValue(), 0);
+
+ try (Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1)) {
+ sh1 = wb2.getSheetAt(0);
+
+ sale_2 = wb2.getName("sale_2");
+ sale_3 = wb2.getName("sale_3");
+ sale_4 = wb2.getName("sale_4");
+
+ cell0 = sh1.getRow(0).getCell(0);
+ cell1 = sh1.getRow(1).getCell(0);
+ cell2 = sh1.getRow(2).getCell(0);
+
+ assertEquals("sale_2", sale_2.getNameName());
+ assertEquals("'47100 - First'!$A$1", sale_2.getRefersToFormula());
+ assertEquals("sale_3", sale_3.getNameName());
+ assertEquals("'47100 - First'!$B$1", sale_3.getRefersToFormula());
+ assertEquals("sale_4", sale_4.getNameName());
+ assertEquals("'47100 - Second'!$A$3", sale_4.getRefersToFormula());
+
+ assertEquals("SUM('47100 - First'!A1:C1)", cell0.getCellFormula());
+ assertEquals("SUM('47100 - First'!A1:C1,'47100 - Second'!A1:A5)", cell1.getCellFormula());
+ assertEquals("sale_2+sale_3+'47100 - First'!C1", cell2.getCellFormula());
+
+ evaluator = wb2.getCreationHelper().createFormulaEvaluator();
+ assertEquals(6.0, evaluator.evaluate(cell0).getNumberValue(), 0);
+ assertEquals(21.0, evaluator.evaluate(cell1).getNumberValue(), 0);
+ assertEquals(6.0, evaluator.evaluate(cell2).getNumberValue(), 0);
+ }
+ }
}
protected void changeSheetNameWithSharedFormulas(String sampleFile) throws IOException {
- Workbook wb = _testDataProvider.openSampleWorkbook(sampleFile);
+ try (Workbook wb = _testDataProvider.openSampleWorkbook(sampleFile)) {
- FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
+ FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
- Sheet sheet = wb.getSheetAt(0);
+ Sheet sheet = wb.getSheetAt(0);
- for (int rownum = 1; rownum <= 40; rownum++) {
- Cell cellA = sheet.getRow(1).getCell(0);
- Cell cellB = sheet.getRow(1).getCell(1);
+ for (int rownum = 1; rownum <= 40; rownum++) {
+ Cell cellA = sheet.getRow(1).getCell(0);
+ Cell cellB = sheet.getRow(1).getCell(1);
- assertEquals(cellB.getStringCellValue(), evaluator.evaluate(cellA).getStringValue());
- }
+ assertEquals(cellB.getStringCellValue(), evaluator.evaluate(cellA).getStringValue());
+ }
- wb.setSheetName(0, "Renamed by POI");
- evaluator.clearAllCachedResultValues();
+ wb.setSheetName(0, "Renamed by POI");
+ evaluator.clearAllCachedResultValues();
- for (int rownum = 1; rownum <= 40; rownum++) {
- Cell cellA = sheet.getRow(1).getCell(0);
- Cell cellB = sheet.getRow(1).getCell(1);
+ for (int rownum = 1; rownum <= 40; rownum++) {
+ Cell cellA = sheet.getRow(1).getCell(0);
+ Cell cellB = sheet.getRow(1).getCell(1);
- assertEquals(cellB.getStringCellValue(), evaluator.evaluate(cellA).getStringValue());
+ assertEquals(cellB.getStringCellValue(), evaluator.evaluate(cellA).getStringValue());
+ }
}
- wb.close();
}
protected void assertSheetOrder(Workbook wb, String... sheets) {
@@ -803,43 +792,37 @@ public abstract class BaseTestWorkbook {
@Test
public void test58499() throws IOException {
- Workbook workbook = _testDataProvider.createWorkbook();
- Sheet sheet = workbook.createSheet();
- for (int i = 0; i < 900; i++) {
- Row r = sheet.createRow(i);
- Cell c = r.createCell(0);
- CellStyle cs = workbook.createCellStyle();
- c.setCellStyle(cs);
- c.setCellValue("AAA");
- }
- try (OutputStream os = new NullOutputStream()) {
+ try (Workbook workbook = _testDataProvider.createWorkbook();
+ OutputStream os = new NullOutputStream()) {
+ Sheet sheet = workbook.createSheet();
+ for (int i = 0; i < 900; i++) {
+ Row r = sheet.createRow(i);
+ Cell c = r.createCell(0);
+ CellStyle cs = workbook.createCellStyle();
+ c.setCellStyle(cs);
+ c.setCellValue("AAA");
+ }
workbook.write(os);
}
- //workbook.dispose();
- workbook.close();
}
@Test
public void windowOneDefaults() throws IOException {
- Workbook b = _testDataProvider.createWorkbook();
- try {
+ try (Workbook b = _testDataProvider.createWorkbook()) {
assertEquals(b.getActiveSheetIndex(), 0);
assertEquals(b.getFirstVisibleTab(), 0);
- } catch (NullPointerException npe) {
- fail("WindowOneRecord in Workbook is probably not initialized");
+ // throws NullPointerException when WindowOneRecord in Workbook is not probably initialized
}
-
- b.close();
}
@Test
public void getSpreadsheetVersion() throws IOException {
- final Workbook wb = _testDataProvider.createWorkbook();
- assertEquals(_testDataProvider.getSpreadsheetVersion(), wb.getSpreadsheetVersion());
- wb.close();
+ try (Workbook wb = _testDataProvider.createWorkbook()) {
+ assertEquals(_testDataProvider.getSpreadsheetVersion(), wb.getSpreadsheetVersion());
+ }
}
-
+
/* FIXME copied from {@link org.apache.poi.ss.TestWorkbookFactory} */
protected static void assertCloseDoesNotModifyFile(String filename, Workbook wb) throws IOException {
final byte[] before = HSSFTestDataSamples.getTestDataFileContent(filename);
@@ -852,23 +835,21 @@ public abstract class BaseTestWorkbook {
@Test
public void sheetClone() throws IOException {
// First up, try a simple file
- final Workbook b = _testDataProvider.createWorkbook();
- assertEquals(0, b.getNumberOfSheets());
- b.createSheet("Sheet One");
- b.createSheet("Sheet Two");
-
- assertEquals(2, b.getNumberOfSheets());
- b.cloneSheet(0);
- assertEquals(3, b.getNumberOfSheets());
-
- // Now try a problem one with drawing records in it
- Workbook bBack = HSSFTestDataSamples.openSampleWorkbook("SheetWithDrawing.xls");
- assertEquals(1, bBack.getNumberOfSheets());
- bBack.cloneSheet(0);
- assertEquals(2, bBack.getNumberOfSheets());
-
- bBack.close();
- b.close();
+ try (Workbook b = _testDataProvider.createWorkbook();
+ Workbook bBack = HSSFTestDataSamples.openSampleWorkbook("SheetWithDrawing.xls")) {
+ assertEquals(0, b.getNumberOfSheets());
+ b.createSheet("Sheet One");
+ b.createSheet("Sheet Two");
+
+ assertEquals(2, b.getNumberOfSheets());
+ b.cloneSheet(0);
+ assertEquals(3, b.getNumberOfSheets());
+
+ // Now try a problem one with drawing records in it
+ assertEquals(1, bBack.getNumberOfSheets());
+ bBack.cloneSheet(0);
+ assertEquals(2, bBack.getNumberOfSheets());
+ }
}
@Test
@@ -899,71 +880,57 @@ public abstract class BaseTestWorkbook {
@Test
public void addSheetTwice() throws IOException {
- final Workbook wb = _testDataProvider.createWorkbook();
- Sheet sheet1 = wb.createSheet("Sheet1");
- assertNotNull(sheet1);
- try {
+ try (Workbook wb = _testDataProvider.createWorkbook()) {
+ Sheet sheet1 = wb.createSheet("Sheet1");
+ assertNotNull(sheet1);
+
+ thrown.expect(IllegalArgumentException.class);
+ thrown.expectMessage("already contains a sheet named 'Sheet1'");
wb.createSheet("Sheet1");
- fail("Should fail if we add the same sheet twice");
- } catch (IllegalArgumentException e) {
- assertTrue(e.getMessage(), e.getMessage().contains("already contains a sheet named 'Sheet1'"));
}
-
- wb.close();
}
-
+
// bug 51233 and 55075: correctly size image if added to a row with a custom height
@Test
public void createDrawing() throws Exception {
- Workbook wb = _testDataProvider.createWorkbook();
- Sheet sheet = wb.createSheet("Main Sheet");
- Row row0 = sheet.createRow(0);
- Row row1 = sheet.createRow(1);
- row1.createCell(0);
- row0.createCell(1);
- row1.createCell(0);
- row1.createCell(1);
-
- byte[] pictureData = _testDataProvider.getTestDataFileContent("logoKarmokar4.png");
-
- int handle = wb.addPicture(pictureData, Workbook.PICTURE_TYPE_PNG);
- Drawing<?> drawing = sheet.createDrawingPatriarch();
- CreationHelper helper = wb.getCreationHelper();
- ClientAnchor anchor = helper.createClientAnchor();
- anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
- anchor.setCol1(0);
- anchor.setRow1(0);
- Picture picture = drawing.createPicture(anchor, handle);
-
- row0.setHeightInPoints(144);
- // set a column width so that XSSF and SXSSF have the same width (default widths may be different otherwise)
- sheet.setColumnWidth(0, 100*256);
- picture.resize();
-
- // The actual dimensions don't matter as much as having XSSF and SXSSF produce the same size drawings
-
- // Check drawing height
- assertEquals(0, anchor.getRow1());
- assertEquals(0, anchor.getRow2());
- assertEquals(0, anchor.getDy1());
- assertEquals(1609725, anchor.getDy2()); //HSSF: 225
-
- // Check drawing width
- assertEquals(0, anchor.getCol1());
- assertEquals(0, anchor.getCol2());
- assertEquals(0, anchor.getDx1());
- assertEquals(1114425, anchor.getDx2()); //HSSF: 171
-
- final boolean writeOut = false;
- if (writeOut) {
- String ext = "." + _testDataProvider.getStandardFileNameExtension();
- String prefix = wb.getClass().getName() + "-createDrawing";
- File f = TempFile.createTempFile(prefix, ext);
- FileOutputStream out = new FileOutputStream(f);
- wb.write(out);
- out.close();
+ try (Workbook wb = _testDataProvider.createWorkbook()) {
+ Sheet sheet = wb.createSheet("Main Sheet");
+ Row row0 = sheet.createRow(0);
+ Row row1 = sheet.createRow(1);
+ row1.createCell(0);
+ row0.createCell(1);
+ row1.createCell(0);
+ row1.createCell(1);
+
+ byte[] pictureData = _testDataProvider.getTestDataFileContent("logoKarmokar4.png");
+
+ int handle = wb.addPicture(pictureData, Workbook.PICTURE_TYPE_PNG);
+ Drawing<?> drawing = sheet.createDrawingPatriarch();
+ CreationHelper helper = wb.getCreationHelper();
+ ClientAnchor anchor = helper.createClientAnchor();
+ anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
+ anchor.setCol1(0);
+ anchor.setRow1(0);
+ Picture picture = drawing.createPicture(anchor, handle);
+
+ row0.setHeightInPoints(144);
+ // set a column width so that XSSF and SXSSF have the same width (default widths may be different otherwise)
+ sheet.setColumnWidth(0, 100 * 256);
+ picture.resize();
+
+ // The actual dimensions don't matter as much as having XSSF and SXSSF produce the same size drawings
+
+ // Check drawing height
+ assertEquals(0, anchor.getRow1());
+ assertEquals(0, anchor.getRow2());
+ assertEquals(0, anchor.getDy1());
+ assertEquals(1609725, anchor.getDy2()); //HSSF: 225
+
+ // Check drawing width
+ assertEquals(0, anchor.getCol1());
+ assertEquals(0, anchor.getCol2());
+ assertEquals(0, anchor.getDx1());
+ assertEquals(1114425, anchor.getDx2()); //HSSF: 171
}
- wb.close();
}
-
}
diff --git a/src/testcases/org/apache/poi/util/NullPrintStream.java b/src/testcases/org/apache/poi/util/NullPrintStream.java
new file mode 100644
index 0000000000..5fd6bc64ad
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/NullPrintStream.java
@@ -0,0 +1,88 @@
+/* ====================================================================
+ 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.util;
+
+import java.io.PrintStream;
+import java.util.Locale;
+
+// need to override all methods to omit calls to UTF-handling methods
+@SuppressForbidden("ignore super constructor with charset - omits declaring UnsupportedEncodingException")
+public class NullPrintStream extends PrintStream {
+ @SuppressWarnings("resource")
+ public NullPrintStream() {
+ super(new NullOutputStream(), true);
+ }
+ @Override
+ public void write(int b) {}
+ @Override
+ public void write(byte[] buf, int off, int len) {}
+ @Override
+ public void print(boolean b) {}
+ @Override
+ public void print(char c) {}
+ @Override
+ public void print(int i) {}
+ @Override
+ public void print(long l) {}
+ @Override
+ public void print(float f) {}
+ @Override
+ public void print(double d) {}
+ @Override
+ public void print(char[] s) {}
+ @Override
+ public void print(String s) {}
+ @Override
+ public void print(Object obj) {}
+ @Override
+ public void println() {}
+ @Override
+ public void println(boolean x) {}
+ @Override
+ public void println(char x) {}
+ @Override
+ public void println(int x) {}
+ @Override
+ public void println(long x) {}
+ @Override
+ public void println(float x) {}
+ @Override
+ public void println(double x) {}
+ @Override
+ public void println(char[] x) {}
+ @Override
+ public void println(String x) {}
+ @Override
+ public void println(Object x) {}
+ @Override
+ public PrintStream printf(String format, Object... args) { return this; }
+ @Override
+ public PrintStream printf(Locale l, String format, Object... args) { return this; }
+ @Override
+ public PrintStream format(String format, Object... args) { return this; }
+ @Override
+ public PrintStream format(Locale l, String format, Object... args) { return this; }
+ @Override
+ public PrintStream append(CharSequence csq) { return this; }
+ @Override
+ public PrintStream append(CharSequence csq, int start, int end) { return this; }
+ @Override
+ public PrintStream append(char c) { return this; }
+ @Override
+ public void write(byte[] b) {}
+}