aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org/apache/poi/hssf/usermodel
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2009-03-29 16:10:40 +0000
committerYegor Kozlov <yegor@apache.org>2009-03-29 16:10:40 +0000
commite47dd63c80d7807381f77ee0d8879332737368cf (patch)
tree84873becffceb445145100a219b89959a7ee3b5b /src/testcases/org/apache/poi/hssf/usermodel
parent9adb9cc6d3da755b57e1c205d634fb4127fa072c (diff)
downloadpoi-e47dd63c80d7807381f77ee0d8879332737368cf.tar.gz
poi-e47dd63c80d7807381f77ee0d8879332737368cf.zip
more refactoring of common ss tests
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@759714 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/testcases/org/apache/poi/hssf/usermodel')
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/usermodel/AllUserModelTests.java2
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestBug43093.java61
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java230
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java56
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java203
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java28
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java26
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestNamedRange.java603
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestUnicodeWorkbook.java113
9 files changed, 300 insertions, 1022 deletions
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/AllUserModelTests.java b/src/testcases/org/apache/poi/hssf/usermodel/AllUserModelTests.java
index 5effed4b55..6b3043c072 100755
--- a/src/testcases/org/apache/poi/hssf/usermodel/AllUserModelTests.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/AllUserModelTests.java
@@ -60,7 +60,7 @@ public class AllUserModelTests {
result.addTestSuite(TestHSSFTextbox.class);
result.addTestSuite(TestHSSFWorkbook.class);
result.addTestSuite(TestLinkTable.class);
- result.addTestSuite(TestNamedRange.class);
+ result.addTestSuite(TestHSSFName.class);
result.addTestSuite(TestOLE2Embeding.class);
result.addTestSuite(TestPOIFSProperties.class);
result.addTestSuite(TestReadWriteChart.class);
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBug43093.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBug43093.java
deleted file mode 100644
index 3dbf5907ff..0000000000
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestBug43093.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/* ====================================================================
- 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.hssf.usermodel;
-
-import junit.framework.TestCase;
-
-/**
- *
- */
-public final class TestBug43093 extends TestCase {
-
- private static void addNewSheetWithCellsA1toD4(HSSFWorkbook book, int sheet) {
-
- HSSFSheet sht = book .createSheet("s" + sheet);
- for (int r=0; r < 4; r++) {
-
- HSSFRow row = sht.createRow (r);
- for (int c=0; c < 4; c++) {
-
- HSSFCell cel = row.createCell(c);
- cel.setCellValue(sheet*100 + r*10 + c);
- }
- }
- }
-
- public void testBug43093() {
- HSSFWorkbook xlw = new HSSFWorkbook();
-
- addNewSheetWithCellsA1toD4(xlw, 1);
- addNewSheetWithCellsA1toD4(xlw, 2);
- addNewSheetWithCellsA1toD4(xlw, 3);
- addNewSheetWithCellsA1toD4(xlw, 4);
-
- HSSFSheet s2 = xlw.getSheet("s2");
- HSSFRow s2r3 = s2.getRow(3);
- HSSFCell s2E4 = s2r3.createCell(4);
- s2E4.setCellFormula("SUM(s3!B2:C3)");
-
- HSSFFormulaEvaluator eva = new HSSFFormulaEvaluator(xlw);
- double d = eva.evaluate(s2E4).getNumberValue();
-
- // internalEvaluate(...) Area3DEval.: 311+312+321+322 expected
- assertEquals(d, (311+312+321+322), 0.0000001);
- // System.out.println("Area3DEval ok.: 311+312+321+322=" + d);
- }
-}
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
index c3b0fe2c92..44063e3c7a 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
@@ -26,6 +26,7 @@ import junit.framework.TestCase;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.OldExcelFormatException;
+import org.apache.poi.hssf.HSSFITestDataProvider;
import org.apache.poi.hssf.model.Workbook;
import org.apache.poi.hssf.record.CellValueRecordInterface;
import org.apache.poi.hssf.record.EmbeddedObjectRefSubRecord;
@@ -36,23 +37,33 @@ import org.apache.poi.hssf.record.formula.Ptg;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.BaseTestBugzillaIssues;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.TempFile;
/**
* Testcases for bugs entered in bugzilla
* the Test name contains the bugzilla bug id
+ *
+ * <b>YK: If a bug can be tested in terms of common ss interfaces,
+ * define the test in the base class {@link BaseTestBugzillaIssues}</b>
+ *
* @author Avik Sengupta
* @author Yegor Kozlov
*/
-public final class TestBugs extends TestCase {
+public final class TestBugs extends BaseTestBugzillaIssues {
- private static HSSFWorkbook openSample(String sampleFileName) {
- return HSSFTestDataSamples.openSampleWorkbook(sampleFileName);
+ @Override
+ protected HSSFITestDataProvider getTestDataProvider(){
+ return HSSFITestDataProvider.getInstance();
}
- private static HSSFWorkbook writeOutAndReadBack(HSSFWorkbook original) {
- return HSSFTestDataSamples.writeOutAndReadBack(original);
+ private HSSFWorkbook openSample(String sampleFileName) {
+ return getTestDataProvider().openSampleWorkbook(sampleFileName);
+ }
+
+ private HSSFWorkbook writeOutAndReadBack(HSSFWorkbook original) {
+ return getTestDataProvider().writeOutAndReadBack(original);
}
private static void writeTestOutputFileForViewing(HSSFWorkbook wb, String simpleFileName) {
@@ -94,16 +105,6 @@ public final class TestBugs extends TestCase {
c.setCellValue(10);
writeOutAndReadBack(wb);
}
- /**Test writing a hyperlink
- * Open resulting sheet in Excel and check that A1 contains a hyperlink*/
- public void test23094() {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet s = wb.createSheet();
- HSSFRow r = s.createRow(0);
- r.createCell(0).setCellFormula("HYPERLINK( \"http://jakarta.apache.org\", \"Jakarta\" )");
-
- writeTestOutputFileForViewing(wb, "test23094");
- }
/** test hyperlinks
* open resulting file in excel, and check that there is a link to Google
@@ -163,68 +164,14 @@ public final class TestBugs extends TestCase {
writeTestOutputFileForViewing(wb, "test15375");
}
-
- /** test writing a file with large number of unique strings
- *open resulting file in Excel to check results!*/
-
- public void test15375_2() throws Exception{
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet = wb.createSheet();
-
- String tmp1 = null;
- String tmp2 = null;
- String tmp3 = null;
-
- for (int i = 0; i < 6000; i++) {
- tmp1 = "Test1" + i;
- tmp2 = "Test2" + i;
- tmp3 = "Test3" + i;
-
- HSSFRow row = sheet.createRow(i);
-
- HSSFCell cell = row.createCell(0);
- setCellText(cell, tmp1);
- cell = row.createCell(1);
- setCellText(cell, tmp2);
- cell = row.createCell(2);
- setCellText(cell, tmp3);
- }
- writeTestOutputFileForViewing(wb, "test15375-2");
- }
- /** another test for the number of unique strings issue
- *test opening the resulting file in Excel*/
- public void test22568() {
- int r=2000;int c=3;
-
- HSSFWorkbook wb = new HSSFWorkbook() ;
- HSSFSheet sheet = wb.createSheet("ExcelTest") ;
-
- int col_cnt=0, rw_cnt=0 ;
-
- col_cnt = c;
- rw_cnt = r;
-
- HSSFRow rw ;
- rw = sheet.createRow(0) ;
- //Header row
- for(int j=0; j<col_cnt; j++){
- HSSFCell cell = rw.createCell(j) ;
- setCellText(cell, "Col " + (j+1)) ;
- }
-
- for(int i=1; i<rw_cnt; i++){
- rw = sheet.createRow(i) ;
- for(int j=0; j<col_cnt; j++){
- HSSFCell cell = rw.createCell(j) ;
- setCellText(cell, "Row:" + (i+1) + ",Column:" + (j+1)) ;
- }
- }
-
- sheet.setDefaultColumnWidth(18) ;
-
- writeTestOutputFileForViewing(wb, "test22568");
+ /**
+ * test writing a file with large number of unique strings,
+ * open resulting file in Excel to check results!
+ */
+ public void test15375_2() {
+ baseTest15375(6000);
}
-
+
/**Double byte strings*/
public void test15556() {
@@ -286,50 +233,6 @@ public final class TestBugs extends TestCase {
}
}
- public void test18800() {
- HSSFWorkbook book = new HSSFWorkbook();
- book.createSheet("TEST");
- HSSFSheet sheet = book.cloneSheet(0);
- book.setSheetName(1,"CLONE");
- sheet.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Test"));
-
- book = writeOutAndReadBack(book);
- sheet = book.getSheet("CLONE");
- HSSFRow row = sheet.getRow(0);
- HSSFCell cell = row.getCell(0);
- assertEquals("Test", cell.getRichStringCellValue().getString());
- }
-
- /**
- * Merged regions were being removed from the parent in cloned sheets
- */
- public void test22720() {
- HSSFWorkbook workBook = new HSSFWorkbook();
- workBook.createSheet("TEST");
- HSSFSheet template = workBook.getSheetAt(0);
-
- template.addMergedRegion(new CellRangeAddress(0, 1, 0, 2));
- template.addMergedRegion(new CellRangeAddress(1, 2, 0, 2));
-
- HSSFSheet clone = workBook.cloneSheet(0);
- int originalMerged = template.getNumMergedRegions();
- assertEquals("2 merged regions", 2, originalMerged);
-
-// remove merged regions from clone
- for (int i=template.getNumMergedRegions()-1; i>=0; i--) {
- clone.removeMergedRegion(i);
- }
-
- assertEquals("Original Sheet's Merged Regions were removed", originalMerged, template.getNumMergedRegions());
-// check if template's merged regions are OK
- if (template.getNumMergedRegions()>0) {
- // fetch the first merged region...EXCEPTION OCCURS HERE
- template.getMergedRegion(0);
- }
- //make sure we dont exception
-
- }
-
/**Tests read and write of Unicode strings in formula results
* bug and testcase submitted by Sompop Kumnoonsate
* The file contains THAI unicode characters.
@@ -424,21 +327,6 @@ public final class TestBugs extends TestCase {
}
}
- public void test28031() {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet = wb.createSheet();
- wb.setSheetName(0, "Sheet1");
-
- HSSFRow row = sheet.createRow(0);
- HSSFCell cell = row.createCell(0);
- String formulaText =
- "IF(ROUND(A2*B2*C2,2)>ROUND(B2*D2,2),ROUND(A2*B2*C2,2),ROUND(B2*D2,2))";
- cell.setCellFormula(formulaText);
-
- assertEquals(formulaText, cell.getCellFormula());
- writeTestOutputFileForViewing(wb, "output28031.xls");
- }
-
public void test33082() {
openSample("33082.xls");
}
@@ -486,19 +374,8 @@ public final class TestBugs extends TestCase {
*/
public void test29206() {
//the first check with blank workbook
- HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFWorkbook wb = openSample("Simple.xls");
HSSFSheet sheet = wb.createSheet();
-
- for(int i = 1; i < 400; i++) {
- HSSFRow row = sheet.getRow(i);
- if(row != null) {
- row.getCell(0);
- }
- }
-
- //now check on an existing xls file
- wb = openSample("Simple.xls");
-
for(int i = 1; i < 400; i++) {
HSSFRow row = sheet.getRow(i);
if(row != null) {
@@ -901,23 +778,6 @@ public final class TestBugs extends TestCase {
assertTrue("no errors writing sample xls", true);
}
- /**
- * Bug 21334: "File error: data may have been lost" with a file
- * that contains macros and this formula:
- * {=SUM(IF(FREQUENCY(IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),""),IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),""))>0,1))}
- */
- public void test21334() {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sh = wb.createSheet();
- HSSFCell cell = sh.createRow(0).createCell(0);
- String formula = "SUM(IF(FREQUENCY(IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),\"\"),IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),\"\"))>0,1))";
- cell.setCellFormula(formula);
-
- HSSFWorkbook wb_sv = writeOutAndReadBack(wb);
- HSSFCell cell_sv = wb_sv.getSheetAt(0).getRow(0).getCell(0);
- assertEquals(formula, cell_sv.getCellFormula());
- }
-
public void test36947() {
HSSFWorkbook wb = openSample("36947.xls");
assertTrue("no errors reading sample xls", true);
@@ -925,16 +785,6 @@ public final class TestBugs extends TestCase {
assertTrue("no errors writing sample xls", true);
}
- /**
- * Bug 42448: Can't parse SUMPRODUCT(A!C7:A!C67, B8:B68) / B69
- */
- public void test42448(){
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFCell cell = wb.createSheet().createRow(0).createCell(0);
- cell.setCellFormula("SUMPRODUCT(A!C7:A!C67, B8:B68) / B69");
- assertTrue("no errors parsing formula", true);
- }
-
public void test39634() {
HSSFWorkbook wb = openSample("39634.xls");
assertTrue("no errors reading sample xls", true);
@@ -1522,38 +1372,6 @@ public final class TestBugs extends TestCase {
}
/**
- * HSSFRichTextString.length() returns negative for really
- * long strings
- */
- public void test46368() {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet s = wb.createSheet();
- HSSFRow r = s.createRow(0);
- for(int i=0; i<15; i++) {
- int len = 32760 + i;
- HSSFCell c = r.createCell(i);
-
- StringBuffer sb = new StringBuffer();
- for(int j=0; j<len; j++) {
- sb.append("x");
- }
- HSSFRichTextString rtr = new HSSFRichTextString(sb.toString());
- assertEquals(len, rtr.length());
- c.setCellValue(rtr);
- }
-
- // Save and reload
- wb = writeOutAndReadBack(wb);
- s = wb.getSheetAt(0);
- r = s.getRow(0);
- for(int i=0; i<15; i++) {
- int len = 32760 + i;
- HSSFCell c = r.getCell(i);
- assertEquals(len, c.getRichStringCellValue().length());
- }
- }
-
- /**
* In POI-2.5 user reported exception when parsing a name with a custom VBA function:
* =MY_VBA_FUNCTION("lskdjflsk")
*/
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java
new file mode 100755
index 0000000000..f6ce14ca92
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java
@@ -0,0 +1,56 @@
+/* ====================================================================
+ 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.hssf.usermodel;
+
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import junit.framework.AssertionFailedError;
+import org.apache.poi.hssf.HSSFITestDataProvider;
+import org.apache.poi.hssf.HSSFTestDataSamples;
+import org.apache.poi.hssf.model.Sheet;
+import org.apache.poi.hssf.model.HSSFFormulaParser;
+import org.apache.poi.hssf.record.DBCellRecord;
+import org.apache.poi.hssf.record.FormulaRecord;
+import org.apache.poi.hssf.record.Record;
+import org.apache.poi.hssf.record.StringRecord;
+import org.apache.poi.hssf.record.formula.Ptg;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.AreaReference;
+import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.ss.formula.FormulaType;
+
+/**
+ * Tests various functionality having to do with {@link org.apache.poi.ss.usermodel.Name}.
+ *
+ * @author Yegor Kozlov
+ */
+public final class TestHSSFFont extends BaseTestFont {
+
+ @Override
+ protected HSSFITestDataProvider getTestDataProvider(){
+ return HSSFITestDataProvider.getInstance();
+ }
+
+ public void testDefaultFont() {
+ baseTestDefaultFont(HSSFFont.FONT_ARIAL, (short)200, Font.COLOR_NORMAL);
+ }
+} \ No newline at end of file
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java
index 56bd25b346..291698ec8f 100755
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java
@@ -19,24 +19,34 @@ package org.apache.poi.hssf.usermodel;
import java.util.Date;
import java.util.GregorianCalendar;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
import junit.framework.AssertionFailedError;
import org.apache.poi.hssf.HSSFITestDataProvider;
+import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.model.Sheet;
+import org.apache.poi.hssf.model.HSSFFormulaParser;
import org.apache.poi.hssf.record.DBCellRecord;
import org.apache.poi.hssf.record.FormulaRecord;
import org.apache.poi.hssf.record.Record;
import org.apache.poi.hssf.record.StringRecord;
+import org.apache.poi.hssf.record.formula.Ptg;
import org.apache.poi.ss.usermodel.ErrorConstants;
import org.apache.poi.ss.usermodel.BaseTestCell;
import org.apache.poi.ss.usermodel.BaseTestNamedRange;
+import org.apache.poi.ss.util.AreaReference;
+import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.ss.formula.FormulaType;
/**
- * Tests various functionality having to do with {@link org.apache.poi.hssf.usermodel.HSSFCell}. For instance support for
- * particular datatypes, etc.
- * @author Andrew C. Oliver (andy at superlinksoftware dot com)
- * @author Dan Sherman (dsherman at isisph.com)
- * @author Alex Jacoby (ajacoby at gmail.com)
+ * Tests various functionality having to do with {@link org.apache.poi.ss.usermodel.Name}.
+ *
+ * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author ROMANL
+ * @author Danny Mui (danny at muibros.com)
+ * @author Amol S. Deshmukh &lt; amol at ap ache dot org &gt;
*/
public final class TestHSSFName extends BaseTestNamedRange {
@@ -45,4 +55,187 @@ public final class TestHSSFName extends BaseTestNamedRange {
return HSSFITestDataProvider.getInstance();
}
+ public void testRepeatingRowsAndColumsNames() {
+ // First test that setting RR&C for same sheet more than once only creates a
+ // single Print_Titles built-in record
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet sheet = wb.createSheet("FirstSheet");
+
+ // set repeating rows and columns twice for the first sheet
+ for (int i = 0; i < 2; i++) {
+ wb.setRepeatingRowsAndColumns(0, 0, 0, 0, 3-1);
+ sheet.createFreezePane(0, 3);
+ }
+ assertEquals(1, wb.getNumberOfNames());
+ HSSFName nr1 = wb.getNameAt(0);
+
+ assertEquals("Print_Titles", nr1.getNameName());
+ if (false) {
+ // TODO - full column references not rendering properly, absolute markers not present either
+ assertEquals("FirstSheet!$A:$A,FirstSheet!$1:$3", nr1.getRefersToFormula());
+ } else {
+ assertEquals("FirstSheet!A:A,FirstSheet!$A$1:$IV$3", nr1.getRefersToFormula());
+ }
+
+ // Save and re-open
+ HSSFWorkbook nwb = HSSFTestDataSamples.writeOutAndReadBack(wb);
+
+ assertEquals(1, nwb.getNumberOfNames());
+ nr1 = nwb.getNameAt(0);
+
+ assertEquals("Print_Titles", nr1.getNameName());
+ assertEquals("FirstSheet!A:A,FirstSheet!$A$1:$IV$3", nr1.getRefersToFormula());
+
+ // check that setting RR&C on a second sheet causes a new Print_Titles built-in
+ // name to be created
+ sheet = nwb.createSheet("SecondSheet");
+ nwb.setRepeatingRowsAndColumns(1, 1, 2, 0, 0);
+
+ assertEquals(2, nwb.getNumberOfNames());
+ HSSFName nr2 = nwb.getNameAt(1);
+
+ assertEquals("Print_Titles", nr2.getNameName());
+ assertEquals("SecondSheet!B:C,SecondSheet!$A$1:$IV$1", nr2.getRefersToFormula());
+
+ if (false) {
+ // In case you fancy checking in excel, to ensure it
+ // won't complain about the file now
+ try {
+ File tempFile = File.createTempFile("POI-45126-", ".xls");
+ FileOutputStream fout = new FileOutputStream(tempFile);
+ nwb.write(fout);
+ fout.close();
+ System.out.println("check out " + tempFile.getAbsolutePath());
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ /** Test of TestCase method, of class test.RangeTest. */
+ public void testNamedRange() {
+ HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("Simple.xls");
+
+ //Creating new Named Range
+ HSSFName newNamedRange = wb.createName();
+
+ //Getting Sheet Name for the reference
+ String sheetName = wb.getSheetName(0);
+
+ //Setting its name
+ newNamedRange.setNameName("RangeTest");
+ //Setting its reference
+ newNamedRange.setRefersToFormula(sheetName + "!$D$4:$E$8");
+
+ //Getting NAmed Range
+ HSSFName namedRange1 = wb.getNameAt(0);
+ //Getting it sheet name
+ sheetName = namedRange1.getSheetName();
+
+ // sanity check
+ SanityChecker c = new SanityChecker();
+ c.checkHSSFWorkbook(wb);
+
+ wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
+ HSSFName nm =wb.getNameAt(wb.getNameIndex("RangeTest"));
+ assertTrue("Name is "+nm.getNameName(),"RangeTest".equals(nm.getNameName()));
+ assertEquals(wb.getSheetName(0)+"!$D$4:$E$8", nm.getRefersToFormula());
+ }
+
+ /**
+ * Reads an excel file already containing a named range.
+ * <p>
+ * Addresses Bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9632" target="_bug">#9632</a>
+ */
+ public void testNamedRead() {
+ HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("namedinput.xls");
+
+ //Get index of the namedrange with the name = "NamedRangeName" , which was defined in input.xls as A1:D10
+ int NamedRangeIndex = wb.getNameIndex("NamedRangeName");
+
+ //Getting NAmed Range
+ HSSFName namedRange1 = wb.getNameAt(NamedRangeIndex);
+ String sheetName = wb.getSheetName(0);
+
+ //Getting its reference
+ String reference = namedRange1.getRefersToFormula();
+
+ assertEquals(sheetName+"!$A$1:$D$10", reference);
+
+ HSSFName namedRange2 = wb.getNameAt(1);
+
+ assertEquals(sheetName+"!$D$17:$G$27", namedRange2.getRefersToFormula());
+ assertEquals("SecondNamedRange", namedRange2.getNameName());
+ }
+
+ /**
+ * Reads an excel file already containing a named range and updates it
+ * <p>
+ * Addresses Bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16411" target="_bug">#16411</a>
+ */
+ public void testNamedReadModify() {
+ HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("namedinput.xls");
+
+ HSSFName name = wb.getNameAt(0);
+ String sheetName = wb.getSheetName(0);
+
+ assertEquals(sheetName+"!$A$1:$D$10", name.getRefersToFormula());
+
+ name = wb.getNameAt(1);
+ String newReference = sheetName +"!$A$1:$C$36";
+
+ name.setRefersToFormula(newReference);
+ assertEquals(newReference, name.getRefersToFormula());
+ }
+
+ /**
+ * Test to see if the print area can be retrieved from an excel created file
+ */
+ public void testPrintAreaFileRead() {
+ HSSFWorkbook workbook = getTestDataProvider().openSampleWorkbook("SimpleWithPrintArea.xls");
+
+ String sheetName = workbook.getSheetName(0);
+ String reference = sheetName+"!$A$1:$C$5";
+
+ assertEquals(reference, workbook.getPrintArea(0));
+ }
+
+
+ public void testDeletedReference() throws Exception {
+ HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("24207.xls");
+ assertEquals(2, wb.getNumberOfNames());
+
+ HSSFName name1 = wb.getNameAt(0);
+ assertEquals("a", name1.getNameName());
+ assertEquals("Sheet1!$A$1", name1.getRefersToFormula());
+ new AreaReference(name1.getRefersToFormula());
+ assertTrue("Successfully constructed first reference", true);
+
+ HSSFName name2 = wb.getNameAt(1);
+ assertEquals("b", name2.getNameName());
+ assertEquals("Sheet1!#REF!", name2.getRefersToFormula());
+ assertTrue(name2.isDeleted());
+ try {
+ new AreaReference(name2.getRefersToFormula());
+ fail("attempt to supply an invalid reference to AreaReference constructor results in exception");
+ } catch (StringIndexOutOfBoundsException e) { // TODO - use a different exception for this condition
+ // expected during successful test
+ }
+ }
+
+ /**
+ * When setting A1 type of referencese HSSFName.setRefersToFormula
+ * must set the type of operands to Ptg.CLASS_REF,
+ * otherwise created named don't appear in the dropdown to the left opf formula bar in Excel
+ */
+ public void testTypeOfRootPtg(){
+ HSSFWorkbook wb = new HSSFWorkbook();
+ wb.createSheet("CSCO");
+
+ Ptg[] ptgs = HSSFFormulaParser.parse("CSCO!$E$71", wb, FormulaType.NAMEDRANGE, 0);
+ for (int i = 0; i < ptgs.length; i++) {
+ assertEquals('R', ptgs[i].getRVAType());
+ }
+
+ }
} \ No newline at end of file
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java
index d1a6719e32..81c8990769 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java
@@ -19,33 +19,23 @@ package org.apache.poi.hssf.usermodel;
import junit.framework.TestCase;
import org.apache.poi.hssf.HSSFTestDataSamples;
+import org.apache.poi.hssf.HSSFITestDataProvider;
+import org.apache.poi.ss.usermodel.BaseTestPicture;
/**
* Test <code>HSSFPicture</code>.
*
* @author Yegor Kozlov (yegor at apache.org)
*/
-public final class TestHSSFPicture extends TestCase{
+public final class TestHSSFPicture extends BaseTestPicture {
- public void testResize() {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sh1 = wb.createSheet();
- HSSFPatriarch p1 = sh1.createDrawingPatriarch();
-
- byte[] pictureData = HSSFTestDataSamples.getTestDataFileContent("logoKarmokar4.png");
- int idx1 = wb.addPicture( pictureData, HSSFWorkbook.PICTURE_TYPE_PNG );
- HSSFPicture picture1 = p1.createPicture(new HSSFClientAnchor(), idx1);
- HSSFClientAnchor anchor1 = picture1.getPreferredSize();
+ @Override
+ protected HSSFITestDataProvider getTestDataProvider(){
+ return HSSFITestDataProvider.getInstance();
+ }
- //assert against what would BiffViewer print if we insert the image in xls and dump the file
- assertEquals(0, anchor1.getCol1());
- assertEquals(0, anchor1.getRow1());
- assertEquals(1, anchor1.getCol2());
- assertEquals(9, anchor1.getRow2());
- assertEquals(0, anchor1.getDx1());
- assertEquals(0, anchor1.getDy1());
- assertEquals(848, anchor1.getDx2());
- assertEquals(240, anchor1.getDy2());
+ public void testResize() {
+ baseTestResize(new HSSFClientAnchor(0, 0, 848, 240, (short)0, 0, (short)1, 9));
}
/**
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
index 880f3ecf24..484ff70e18 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
@@ -59,23 +59,6 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
assertEquals(3, nameRecord.getSheetNumber());
}
- public void testCaseInsensitiveNames() {
- HSSFWorkbook b = new HSSFWorkbook( );
- HSSFSheet originalSheet = b.createSheet("Sheet1");
- HSSFSheet fetchedSheet = b.getSheet("sheet1");
- if(fetchedSheet == null) {
- throw new AssertionFailedError("Identified bug 44892");
- }
- assertEquals(originalSheet, fetchedSheet);
- try {
- b.createSheet("sHeeT1");
- fail("should have thrown exceptiuon due to duplicate sheet name");
- } catch (IllegalArgumentException e) {
- // expected during successful test
- assertEquals("The workbook already contains a sheet of this name", e.getMessage());
- }
- }
-
public void testWindowOneDefaults() {
HSSFWorkbook b = new HSSFWorkbook( );
try {
@@ -154,7 +137,7 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
// So, start again
b = getTestDataProvider().openSampleWorkbook("44010-SingleChart.xls");
- b = writeRead(b);
+ b = getTestDataProvider().writeOutAndReadBack(b);
assertEquals(2, b.getNumberOfSheets());
s = b.getSheetAt(1);
assertEquals(0, s.getFirstRowNum());
@@ -184,7 +167,7 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
// So, start again
b = getTestDataProvider().openSampleWorkbook("44010-TwoCharts.xls");
- b = writeRead(b);
+ b = getTestDataProvider().writeOutAndReadBack(b);
assertEquals(3, b.getNumberOfSheets());
s = b.getSheetAt(1);
@@ -195,11 +178,6 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
assertEquals(8, s.getLastRowNum());
}
- private static HSSFWorkbook writeRead(HSSFWorkbook b) {
- return HSSFTestDataSamples.writeOutAndReadBack(b);
- }
-
-
public void testSelectedSheet_bug44523() {
HSSFWorkbook wb=new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("Sheet1");
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestNamedRange.java b/src/testcases/org/apache/poi/hssf/usermodel/TestNamedRange.java
deleted file mode 100644
index ecb6d7a62b..0000000000
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestNamedRange.java
+++ /dev/null
@@ -1,603 +0,0 @@
-/* ====================================================================
- 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.hssf.usermodel;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import junit.framework.TestCase;
-
-import org.apache.poi.hssf.HSSFTestDataSamples;
-import org.apache.poi.hssf.model.HSSFFormulaParser;
-import org.apache.poi.hssf.record.formula.Ptg;
-import org.apache.poi.ss.util.AreaReference;
-import org.apache.poi.ss.util.CellReference;
-import org.apache.poi.ss.formula.FormulaType;
-
-/**
- *
- * @author ROMANL
- * @author Andrew C. Oliver (acoliver at apache dot org)
- * @author Danny Mui (danny at muibros.com)
- * @author Amol S. Deshmukh &lt; amol at ap ache dot org &gt;
- */
-public final class TestNamedRange extends TestCase {
-
- private static HSSFWorkbook openSample(String sampleFileName) {
- return HSSFTestDataSamples.openSampleWorkbook(sampleFileName);
- }
-
- /** Test of TestCase method, of class test.RangeTest. */
- public void testNamedRange() {
- HSSFWorkbook wb = openSample("Simple.xls");
-
- //Creating new Named Range
- HSSFName newNamedRange = wb.createName();
-
- //Getting Sheet Name for the reference
- String sheetName = wb.getSheetName(0);
-
- //Setting its name
- newNamedRange.setNameName("RangeTest");
- //Setting its reference
- newNamedRange.setRefersToFormula(sheetName + "!$D$4:$E$8");
-
- //Getting NAmed Range
- HSSFName namedRange1 = wb.getNameAt(0);
- //Getting it sheet name
- sheetName = namedRange1.getSheetName();
-
- // sanity check
- SanityChecker c = new SanityChecker();
- c.checkHSSFWorkbook(wb);
-
- wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
- HSSFName nm =wb.getNameAt(wb.getNameIndex("RangeTest"));
- assertTrue("Name is "+nm.getNameName(),"RangeTest".equals(nm.getNameName()));
- assertEquals(wb.getSheetName(0)+"!$D$4:$E$8", nm.getRefersToFormula());
- }
-
- /**
- * Reads an excel file already containing a named range.
- * <p>
- * Addresses Bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9632" target="_bug">#9632</a>
- */
- public void testNamedRead() {
- HSSFWorkbook wb = openSample("namedinput.xls");
-
- //Get index of the namedrange with the name = "NamedRangeName" , which was defined in input.xls as A1:D10
- int NamedRangeIndex = wb.getNameIndex("NamedRangeName");
-
- //Getting NAmed Range
- HSSFName namedRange1 = wb.getNameAt(NamedRangeIndex);
- String sheetName = wb.getSheetName(0);
-
- //Getting its reference
- String reference = namedRange1.getRefersToFormula();
-
- assertEquals(sheetName+"!$A$1:$D$10", reference);
-
- HSSFName namedRange2 = wb.getNameAt(1);
-
- assertEquals(sheetName+"!$D$17:$G$27", namedRange2.getRefersToFormula());
- assertEquals("SecondNamedRange", namedRange2.getNameName());
- }
-
- /**
- * Reads an excel file already containing a named range and updates it
- * <p>
- * Addresses Bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16411" target="_bug">#16411</a>
- */
- public void testNamedReadModify() {
- HSSFWorkbook wb = openSample("namedinput.xls");
-
- HSSFName name = wb.getNameAt(0);
- String sheetName = wb.getSheetName(0);
-
- assertEquals(sheetName+"!$A$1:$D$10", name.getRefersToFormula());
-
- name = wb.getNameAt(1);
- String newReference = sheetName +"!$A$1:$C$36";
-
- name.setRefersToFormula(newReference);
- assertEquals(newReference, name.getRefersToFormula());
- }
-
- /**
- * Test that multiple named ranges can be added written and read
- */
- public void testMultipleNamedWrite() {
- HSSFWorkbook wb = new HSSFWorkbook();
-
-
- wb.createSheet("testSheet1");
- String sheetName = wb.getSheetName(0);
-
- assertEquals("testSheet1", sheetName);
-
- //Creating new Named Range
- HSSFName newNamedRange = wb.createName();
-
- newNamedRange.setNameName("RangeTest");
- newNamedRange.setRefersToFormula(sheetName + "!$D$4:$E$8");
-
- //Creating another new Named Range
- HSSFName newNamedRange2 = wb.createName();
-
- newNamedRange2.setNameName("AnotherTest");
- newNamedRange2.setRefersToFormula(sheetName + "!$F$1:$G$6");
-
- wb.getNameAt(0);
-
- wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
- HSSFName nm =wb.getNameAt(wb.getNameIndex("RangeTest"));
- assertTrue("Name is "+nm.getNameName(),"RangeTest".equals(nm.getNameName()));
- assertTrue("Reference is "+nm.getRefersToFormula(),(wb.getSheetName(0)+"!$D$4:$E$8").equals(nm.getRefersToFormula()));
-
- nm = wb.getNameAt(wb.getNameIndex("AnotherTest"));
- assertTrue("Name is "+nm.getNameName(),"AnotherTest".equals(nm.getNameName()));
- assertTrue("Reference is "+nm.getRefersToFormula(),newNamedRange2.getRefersToFormula().equals(nm.getRefersToFormula()));
- }
-
- /**
- * Test case provided by czhang@cambian.com (Chun Zhang)
- * <p>
- * Addresses Bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13775" target="_bug">#13775</a>
- */
- public void testMultiNamedRange() {
-
- // Create a new workbook
- HSSFWorkbook wb = new HSSFWorkbook ();
-
-
- // Create a worksheet 'sheet1' in the new workbook
- wb.createSheet ();
- wb.setSheetName (0, "sheet1");
-
- // Create another worksheet 'sheet2' in the new workbook
- wb.createSheet ();
- wb.setSheetName (1, "sheet2");
-
- // Create a new named range for worksheet 'sheet1'
- HSSFName namedRange1 = wb.createName();
-
- // Set the name for the named range for worksheet 'sheet1'
- namedRange1.setNameName("RangeTest1");
-
- // Set the reference for the named range for worksheet 'sheet1'
- namedRange1.setRefersToFormula("sheet1" + "!$A$1:$L$41");
-
- // Create a new named range for worksheet 'sheet2'
- HSSFName namedRange2 = wb.createName();
-
- // Set the name for the named range for worksheet 'sheet2'
- namedRange2.setNameName("RangeTest2");
-
- // Set the reference for the named range for worksheet 'sheet2'
- namedRange2.setRefersToFormula("sheet2" + "!$A$1:$O$21");
-
- // Write the workbook to a file
- // Read the Excel file and verify its content
- wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
- HSSFName nm1 =wb.getNameAt(wb.getNameIndex("RangeTest1"));
- assertTrue("Name is "+nm1.getNameName(),"RangeTest1".equals(nm1.getNameName()));
- assertTrue("Reference is "+nm1.getRefersToFormula(),(wb.getSheetName(0)+"!$A$1:$L$41").equals(nm1.getRefersToFormula()));
-
- HSSFName nm2 =wb.getNameAt(wb.getNameIndex("RangeTest2"));
- assertTrue("Name is "+nm2.getNameName(),"RangeTest2".equals(nm2.getNameName()));
- assertTrue("Reference is "+nm2.getRefersToFormula(),(wb.getSheetName(1)+"!$A$1:$O$21").equals(nm2.getRefersToFormula()));
- }
-
- public void testUnicodeNamedRange() {
- HSSFWorkbook workBook = new HSSFWorkbook();
- workBook.createSheet("Test");
- HSSFName name = workBook.createName();
- name.setNameName("\u03B1");
- name.setRefersToFormula("Test!$D$3:$E$8");
-
-
- HSSFWorkbook workBook2 = HSSFTestDataSamples.writeOutAndReadBack(workBook);
- HSSFName name2 = workBook2.getNameAt(0);
-
- assertEquals("\u03B1", name2.getNameName());
- assertEquals("Test!$D$3:$E$8", name2.getRefersToFormula());
- }
-
- /**
- * Test to see if the print areas can be retrieved/created in memory
- */
- public void testSinglePrintArea() {
- HSSFWorkbook workbook = new HSSFWorkbook();
- workbook.createSheet("Test Print Area");
- String sheetName = workbook.getSheetName(0);
-
- String reference = "$A$1:$B$1";
- workbook.setPrintArea(0, reference);
-
- String retrievedPrintArea = workbook.getPrintArea(0);
-
- assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
- assertEquals("'" + sheetName + "'!$A$1:$B$1", retrievedPrintArea);
- }
-
- /**
- * For Convenience, don't force sheet names to be used
- */
- public void testSinglePrintAreaWOSheet()
- {
- HSSFWorkbook workbook = new HSSFWorkbook();
- workbook.createSheet("Test Print Area");
- String sheetName = workbook.getSheetName(0);
-
- String reference = "$A$1:$B$1";
- workbook.setPrintArea(0, reference);
-
- String retrievedPrintArea = workbook.getPrintArea(0);
-
- assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
- assertEquals("'" + sheetName + "'!" + reference, retrievedPrintArea);
- }
-
- /**
- * Test to see if the print area can be retrieved from an excel created file
- */
- public void testPrintAreaFileRead() {
- HSSFWorkbook workbook = openSample("SimpleWithPrintArea.xls");
-
- String sheetName = workbook.getSheetName(0);
- String reference = sheetName+"!$A$1:$C$5";
-
- assertEquals(reference, workbook.getPrintArea(0));
- }
-
- /**
- * Test to see if the print area made it to the file
- */
- public void testPrintAreaFile() {
- HSSFWorkbook workbook = new HSSFWorkbook();
- workbook.createSheet("Test Print Area");
- String sheetName = workbook.getSheetName(0);
-
-
- String reference = "$A$1:$B$1";
- workbook.setPrintArea(0, reference);
-
- workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);
-
- String retrievedPrintArea = workbook.getPrintArea(0);
- assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
- assertEquals("References Match", "'" + sheetName + "'!$A$1:$B$1", retrievedPrintArea);
- }
-
- /**
- * Test to see if multiple print areas made it to the file
- */
- public void testMultiplePrintAreaFile() {
- HSSFWorkbook workbook = new HSSFWorkbook();
-
- workbook.createSheet("Sheet1");
- workbook.createSheet("Sheet2");
- workbook.createSheet("Sheet3");
- String reference1 = "$A$1:$B$1";
- String reference2 = "$B$2:$D$5";
- String reference3 = "$D$2:$F$5";
-
- workbook.setPrintArea(0, reference1);
- workbook.setPrintArea(1, reference2);
- workbook.setPrintArea(2, reference3);
-
- //Check created print areas
- String retrievedPrintArea;
-
- retrievedPrintArea = workbook.getPrintArea(0);
- assertNotNull("Print Area Not Found (Sheet 1)", retrievedPrintArea);
- assertEquals("Sheet1!" + reference1, retrievedPrintArea);
-
- retrievedPrintArea = workbook.getPrintArea(1);
- assertNotNull("Print Area Not Found (Sheet 2)", retrievedPrintArea);
- assertEquals("Sheet2!" + reference2, retrievedPrintArea);
-
- retrievedPrintArea = workbook.getPrintArea(2);
- assertNotNull("Print Area Not Found (Sheet 3)", retrievedPrintArea);
- assertEquals("Sheet3!" + reference3, retrievedPrintArea);
-
- // Check print areas after re-reading workbook
- workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);
-
- retrievedPrintArea = workbook.getPrintArea(0);
- assertNotNull("Print Area Not Found (Sheet 1)", retrievedPrintArea);
- assertEquals("Sheet1!" + reference1, retrievedPrintArea);
-
- retrievedPrintArea = workbook.getPrintArea(1);
- assertNotNull("Print Area Not Found (Sheet 2)", retrievedPrintArea);
- assertEquals("Sheet2!" + reference2, retrievedPrintArea);
-
- retrievedPrintArea = workbook.getPrintArea(2);
- assertNotNull("Print Area Not Found (Sheet 3)", retrievedPrintArea);
- assertEquals("Sheet3!" + reference3, retrievedPrintArea);
- }
-
- /**
- * Tests the setting of print areas with coordinates (Row/Column designations)
- *
- */
- public void testPrintAreaCoords(){
- HSSFWorkbook workbook = new HSSFWorkbook();
- workbook.createSheet("Test Print Area");
- String sheetName = workbook.getSheetName(0);
-
- workbook.setPrintArea(0, 0, 1, 0, 0);
-
- String retrievedPrintArea = workbook.getPrintArea(0);
-
- assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
- assertEquals("'" + sheetName + "'!$A$1:$B$1", retrievedPrintArea);
- }
-
-
- /**
- * Tests the parsing of union area expressions, and re-display in the presence of sheet names
- * with special characters.
- */
- public void testPrintAreaUnion(){
- HSSFWorkbook workbook = new HSSFWorkbook();
- workbook.createSheet("Test Print Area");
-
- String reference = "$A$1:$B$1,$D$1:$F$2";
- workbook.setPrintArea(0, reference);
- String retrievedPrintArea = workbook.getPrintArea(0);
- assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
- assertEquals("'Test Print Area'!$A$1:$B$1,'Test Print Area'!$D$1:$F$2", retrievedPrintArea);
- }
-
- /**
- * Verifies an existing print area is deleted
- *
- */
- public void testPrintAreaRemove() {
- HSSFWorkbook workbook = new HSSFWorkbook();
- workbook.createSheet("Test Print Area");
- workbook.getSheetName(0);
-
- workbook.setPrintArea(0, 0, 1, 0, 0);
-
- String retrievedPrintArea = workbook.getPrintArea(0);
-
- assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
-
- workbook.removePrintArea(0);
- assertNull("PrintArea was not removed", workbook.getPrintArea(0));
- }
-
- /**
- * Verifies correct functioning for "single cell named range" (aka "named cell")
- */
- public void testNamedCell_1() {
-
- // setup for this testcase
- String sheetName = "Test Named Cell";
- String cellName = "A name for a named cell";
- String cellValue = "TEST Value";
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet = wb.createSheet(sheetName);
- sheet.createRow(0).createCell(0).setCellValue(new HSSFRichTextString(cellValue));
-
- // create named range for a single cell using areareference
- HSSFName namedCell = wb.createName();
- namedCell.setNameName(cellName);
- String reference = "'" + sheetName + "'" + "!A1:A1";
- namedCell.setRefersToFormula(reference);
-
- // retrieve the newly created named range
- int namedCellIdx = wb.getNameIndex(cellName);
- HSSFName aNamedCell = wb.getNameAt(namedCellIdx);
- assertNotNull(aNamedCell);
-
- // retrieve the cell at the named range and test its contents
- AreaReference aref = new AreaReference(aNamedCell.getRefersToFormula());
- assertTrue("Should be exactly 1 cell in the named cell :'" +cellName+"'", aref.isSingleCell());
-
- CellReference cref = aref.getFirstCell();
- assertNotNull(cref);
- HSSFSheet s = wb.getSheet(cref.getSheetName());
- assertNotNull(s);
- HSSFRow r = sheet.getRow(cref.getRow());
- HSSFCell c = r.getCell(cref.getCol());
- String contents = c.getRichStringCellValue().getString();
- assertEquals("Contents of cell retrieved by its named reference", contents, cellValue);
- }
-
- /**
- * Verifies correct functioning for "single cell named range" (aka "named cell")
- */
- public void testNamedCell_2() {
-
- // setup for this testcase
- String sname = "TestSheet", cname = "TestName", cvalue = "TestVal";
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet = wb.createSheet(sname);
- sheet.createRow(0).createCell(0).setCellValue(new HSSFRichTextString(cvalue));
-
- // create named range for a single cell using cellreference
- HSSFName namedCell = wb.createName();
- namedCell.setNameName(cname);
- String reference = sname+"!A1";
- namedCell.setRefersToFormula(reference);
-
- // retrieve the newly created named range
- int namedCellIdx = wb.getNameIndex(cname);
- HSSFName aNamedCell = wb.getNameAt(namedCellIdx);
- assertNotNull(aNamedCell);
-
- // retrieve the cell at the named range and test its contents
- CellReference cref = new CellReference(aNamedCell.getRefersToFormula());
- assertNotNull(cref);
- HSSFSheet s = wb.getSheet(cref.getSheetName());
- HSSFRow r = sheet.getRow(cref.getRow());
- HSSFCell c = r.getCell(cref.getCol());
- String contents = c.getRichStringCellValue().getString();
- assertEquals("Contents of cell retrieved by its named reference", contents, cvalue);
- }
-
- public void testDeletedReference() throws Exception {
- HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("24207.xls");
- assertEquals(2, wb.getNumberOfNames());
-
- HSSFName name1 = wb.getNameAt(0);
- assertEquals("a", name1.getNameName());
- assertEquals("Sheet1!$A$1", name1.getRefersToFormula());
- new AreaReference(name1.getRefersToFormula());
- assertTrue("Successfully constructed first reference", true);
-
- HSSFName name2 = wb.getNameAt(1);
- assertEquals("b", name2.getNameName());
- assertEquals("Sheet1!#REF!", name2.getRefersToFormula());
- assertTrue(name2.isDeleted());
- try {
- new AreaReference(name2.getRefersToFormula());
- fail("attempt to supply an invalid reference to AreaReference constructor results in exception");
- } catch (StringIndexOutOfBoundsException e) { // TODO - use a different exception for this condition
- // expected during successful test
- }
- }
-
- public void testRepeatingRowsAndColumsNames() {
- // First test that setting RR&C for same sheet more than once only creates a
- // single Print_Titles built-in record
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet = wb.createSheet("FirstSheet");
-
- // set repeating rows and columns twice for the first sheet
- for (int i = 0; i < 2; i++) {
- wb.setRepeatingRowsAndColumns(0, 0, 0, 0, 3-1);
- sheet.createFreezePane(0, 3);
- }
- assertEquals(1, wb.getNumberOfNames());
- HSSFName nr1 = wb.getNameAt(0);
-
- assertEquals("Print_Titles", nr1.getNameName());
- if (false) {
- // TODO - full column references not rendering properly, absolute markers not present either
- assertEquals("FirstSheet!$A:$A,FirstSheet!$1:$3", nr1.getRefersToFormula());
- } else {
- assertEquals("FirstSheet!A:A,FirstSheet!$A$1:$IV$3", nr1.getRefersToFormula());
- }
-
- // Save and re-open
- HSSFWorkbook nwb = HSSFTestDataSamples.writeOutAndReadBack(wb);
-
- assertEquals(1, nwb.getNumberOfNames());
- nr1 = nwb.getNameAt(0);
-
- assertEquals("Print_Titles", nr1.getNameName());
- assertEquals("FirstSheet!A:A,FirstSheet!$A$1:$IV$3", nr1.getRefersToFormula());
-
- // check that setting RR&C on a second sheet causes a new Print_Titles built-in
- // name to be created
- sheet = nwb.createSheet("SecondSheet");
- nwb.setRepeatingRowsAndColumns(1, 1, 2, 0, 0);
-
- assertEquals(2, nwb.getNumberOfNames());
- HSSFName nr2 = nwb.getNameAt(1);
-
- assertEquals("Print_Titles", nr2.getNameName());
- assertEquals("SecondSheet!B:C,SecondSheet!$A$1:$IV$1", nr2.getRefersToFormula());
-
- if (false) {
- // In case you fancy checking in excel, to ensure it
- // won't complain about the file now
- try {
- File tempFile = File.createTempFile("POI-45126-", ".xls");
- FileOutputStream fout = new FileOutputStream(tempFile);
- nwb.write(fout);
- fout.close();
- System.out.println("check out " + tempFile.getAbsolutePath());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- /**
- * When setting A1 type of referencese HSSFName.setRefersToFormula
- * must set the type of operands to Ptg.CLASS_REF,
- * otherwise created named don't appear in the dropdown to the left opf formula bar in Excel
- */
- public void testTypeOfRootPtg(){
- HSSFWorkbook wb = new HSSFWorkbook();
- wb.createSheet("CSCO");
-
- Ptg[] ptgs = HSSFFormulaParser.parse("CSCO!$E$71", wb, FormulaType.NAMEDRANGE, 0);
- for (int i = 0; i < ptgs.length; i++) {
- assertEquals('R', ptgs[i].getRVAType());
- }
-
- }
-
- public void testScope() {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sh1 = wb.createSheet();
- HSSFSheet sh2 = wb.createSheet();
-
- HSSFName name;
-
- name = wb.createName();
- name.setNameName("aaa");
- name = wb.createName();
- try {
- name.setNameName("aaa");
- fail("Expected exception");
- } catch(Exception e){
- assertEquals("The workbook already contains this name: aaa", e.getMessage());
- name.setNameName("aaa-2");
- }
-
- name = wb.createName();
- name.setSheetIndex(0);
- name.setNameName("aaa");
- name = wb.createName();
- name.setSheetIndex(0);
- try {
- name.setNameName("aaa");
- fail("Expected exception");
- } catch(Exception e){
- assertEquals("The sheet already contains this name: aaa", e.getMessage());
- name.setNameName("aaa-2");
- }
-
- name = wb.createName();
- name.setSheetIndex(1);
- name.setNameName("aaa");
- name = wb.createName();
- name.setSheetIndex(1);
- try {
- name.setNameName("aaa");
- fail("Expected exception");
- } catch(Exception e){
- assertEquals("The sheet already contains this name: aaa", e.getMessage());
- name.setNameName("aaa-2");
- }
-
- int cnt = 0;
- for (int i = 0; i < wb.getNumberOfNames(); i++) {
- if("aaa".equals(wb.getNameName(i))) cnt++;
- }
- assertEquals(3, cnt);
- }
-}
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestUnicodeWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestUnicodeWorkbook.java
index 2a92152857..a90aa29080 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestUnicodeWorkbook.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestUnicodeWorkbook.java
@@ -16,132 +16,39 @@
*/
package org.apache.poi.hssf.usermodel;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileInputStream;
-
-import org.apache.poi.util.TempFile;
-
import junit.framework.TestCase;
+import org.apache.poi.hssf.HSSFTestDataSamples;
public class TestUnicodeWorkbook extends TestCase {
- public TestUnicodeWorkbook(String s) {
- super(s);
- }
-
- /** Tests that all of the unicode capable string fields can be set, written and then read back
- *
- *
- */
- public void testUnicodeInAll() throws Exception {
- HSSFWorkbook wb = new HSSFWorkbook();
- //Create a unicode dataformat (contains euro symbol)
- HSSFDataFormat df = wb.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)
- HSSFSheet s = wb.createSheet("\u20ac");
-
- //Set a unicode header (you guessed it the euro symbol)
- HSSFHeader h = s.getHeader();
- h.setCenter("\u20ac");
- h.setLeft("\u20ac");
- h.setRight("\u20ac");
-
- //Set a unicode footer
- HSSFFooter f = s.getFooter();
- f.setCenter("\u20ac");
- f.setLeft("\u20ac");
- f.setRight("\u20ac");
-
- HSSFRow r = s.createRow(0);
- HSSFCell c = r.createCell(1);
- c.setCellValue(12.34);
- c.getCellStyle().setDataFormat(fmt);
-
- HSSFCell c2 = r.createCell(2);
- c.setCellValue(new HSSFRichTextString("\u20ac"));
-
- HSSFCell c3 = r.createCell(3);
- String formulaString = "TEXT(12.34,\"\u20ac###,##\")";
- c3.setCellFormula(formulaString);
-
-
- File tempFile = TempFile.createTempFile("unicode", "test.xls");
- FileOutputStream stream = new FileOutputStream(tempFile);
- wb.write(stream);
-
- wb = null;
- FileInputStream in = new FileInputStream(tempFile);
- wb = new HSSFWorkbook(in);
-
- //Test the sheetname
- s = wb.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 = wb.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);
- }
-
/** Tests Bug38230
* That a Umlat is written and then read back.
* It should have been written as a compressed unicode.
- *
- *
+ *
+ *
*
*/
public void testUmlatReadWrite() throws Exception {
HSSFWorkbook wb = new HSSFWorkbook();
-
+
//Create a unicode sheet name (euro symbol)
HSSFSheet s = wb.createSheet("test");
-
+
HSSFRow r = s.createRow(0);
HSSFCell c = r.createCell(1);
c.setCellValue(new HSSFRichTextString("\u00e4"));
-
+
//Confirm that the sring will be compressed
assertEquals(c.getRichStringCellValue().getUnicodeString().getOptionFlags(), 0);
-
- File tempFile = TempFile.createTempFile("umlat", "test.xls");
- FileOutputStream stream = new FileOutputStream(tempFile);
- wb.write(stream);
-
- wb = null;
- FileInputStream in = new FileInputStream(tempFile);
- wb = new HSSFWorkbook(in);
+
+ wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
//Test the sheetname
s = wb.getSheet("test");
assertNotNull(s);
-
+
c = r.getCell(1);
assertEquals(c.getRichStringCellValue().getString(), "\u00e4");
- }
+ }
}