diff options
author | Andreas Beeker <kiwiwings@apache.org> | 2020-08-17 20:25:08 +0000 |
---|---|---|
committer | Andreas Beeker <kiwiwings@apache.org> | 2020-08-17 20:25:08 +0000 |
commit | b7b0a0c21579b38b8f1aa553eda35564cb01e3d2 (patch) | |
tree | 8f6d7afee458bdd761965d49f4a8ccb218022361 /src/testcases | |
parent | f8040e5f8c0e74b064db13c93ec9c5025542848c (diff) | |
download | poi-b7b0a0c21579b38b8f1aa553eda35564cb01e3d2.tar.gz poi-b7b0a0c21579b38b8f1aa553eda35564cb01e3d2.zip |
Activate Forbidden-Apis-Check also for other tests
Max supported Java version is currently Java 14
Fix the check failures
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1880944 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/testcases')
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) {} +} |