aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2009-06-19 10:37:24 +0000
committerYegor Kozlov <yegor@apache.org>2009-06-19 10:37:24 +0000
commit234735a4144b7ae26fb064551d16d41dbecf5fe0 (patch)
treec573487d529bdf263914b31b9bce5cc0a6903c56 /src/testcases
parent84a6e0a03d56f26ffa2f1829f1e506fc09739f6e (diff)
downloadpoi-234735a4144b7ae26fb064551d16d41dbecf5fe0.tar.gz
poi-234735a4144b7ae26fb064551d16d41dbecf5fe0.zip
fixed a regression issue where HSSFHyperlink failed to set inter-sheet and file links, see Bugzilla #47375
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@786442 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/testcases')
-rw-r--r--src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java4
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/usermodel/TestHSSFHyperlink.java93
-rwxr-xr-xsrc/testcases/org/apache/poi/ss/usermodel/BaseTestHyperlink.java88
3 files changed, 127 insertions, 58 deletions
diff --git a/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java b/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java
index 7bb05f4f12..4232af7c78 100644
--- a/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java
+++ b/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java
@@ -281,7 +281,7 @@ public final class TestHyperlinkRecord extends TestCase {
assertEquals("file", link.getLabel());
assertEquals("link1.xls", link.getShortFilename());
- assertEquals(null, link.getAddress());
+ assertEquals("link1.xls", link.getAddress());
}
public void testReadEmailLink(){
@@ -317,7 +317,7 @@ public final class TestHyperlinkRecord extends TestCase {
assertEquals("place", link.getLabel());
assertEquals("Sheet1!A1", link.getTextMark());
- assertEquals(null, link.getAddress());
+ assertEquals("Sheet1!A1", link.getAddress());
}
private void serialize(byte[] data){
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFHyperlink.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFHyperlink.java
index 9474a08c49..2d56482173 100755
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFHyperlink.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFHyperlink.java
@@ -17,25 +17,27 @@
package org.apache.poi.hssf.usermodel;
-import junit.framework.TestCase;
-
-import java.io.*;
-
import org.apache.poi.hssf.HSSFTestDataSamples;
+import org.apache.poi.hssf.HSSFITestDataProvider;
+import org.apache.poi.ss.usermodel.BaseTestHyperlink;
/**
* Tests HSSFHyperlink.
*
* @author Yegor Kozlov
*/
-public final class TestHSSFHyperlink extends TestCase {
+public final class TestHSSFHyperlink extends BaseTestHyperlink {
+ @Override
+ protected HSSFITestDataProvider getTestDataProvider(){
+ return HSSFITestDataProvider.getInstance();
+ }
/**
* Test that we can read hyperlinks.
*/
public void testRead() {
- HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("HyperlinksOnManySheets.xls");
+ HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("HyperlinksOnManySheets.xls");
HSSFSheet sheet;
HSSFCell cell;
@@ -71,10 +73,11 @@ public final class TestHSSFHyperlink extends TestCase {
assertEquals("Link To First Sheet", link.getLabel());
assertEquals("Link To First Sheet", cell.getRichStringCellValue().getString());
assertEquals("WebLinks!A1", link.getTextMark());
+ assertEquals("WebLinks!A1", link.getAddress());
}
public void testModify() throws Exception {
- HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("HyperlinksOnManySheets.xls");
+ HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("HyperlinksOnManySheets.xls");
HSSFSheet sheet;
HSSFCell cell;
@@ -86,11 +89,7 @@ public final class TestHSSFHyperlink extends TestCase {
//modify the link
link.setAddress("www.apache.org");
- //serialize and read again
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- wb.write(out);
-
- wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+ wb = getTestDataProvider().writeOutAndReadBack(wb);
sheet = wb.getSheet("WebLinks");
cell = sheet.getRow(4).getCell(0);
link = cell.getHyperlink();
@@ -99,71 +98,53 @@ public final class TestHSSFHyperlink extends TestCase {
}
- public void testCreate() throws Exception {
- HSSFWorkbook wb = new HSSFWorkbook();
+ /**
+ * HSSF-specific ways of creating links to a place in workbook.
+ * You can set the target in two ways:
+ * link.setTextMark("'Target Sheet-1'!A1"); //HSSF-specific
+ * or
+ * link.setAddress("'Target Sheet-1'!A1"); //common between XSSF and HSSF
+ */
+ public void testCreateDocumentLink() throws Exception {
+ HSSFWorkbook wb = getTestDataProvider().createWorkbook();
+ //link to a place in this workbook
+ HSSFHyperlink link;
HSSFCell cell;
HSSFSheet sheet = wb.createSheet("Hyperlinks");
- //URL
- cell = sheet.createRow(0).createCell(0);
- cell.setCellValue("URL Link");
- HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
- link.setAddress("http://poi.apache.org/");
- cell.setHyperlink(link);
-
- //link to a file in the current directory
- cell = sheet.createRow(1).createCell(0);
- cell.setCellValue("File Link");
- link = new HSSFHyperlink(HSSFHyperlink.LINK_FILE);
- link.setAddress("link1.xls");
- cell.setHyperlink(link);
-
- //e-mail link
- cell = sheet.createRow(2).createCell(0);
- cell.setCellValue("Email Link");
- link = new HSSFHyperlink(HSSFHyperlink.LINK_EMAIL);
- //note, if subject contains white spaces, make sure they are url-encoded
- link.setAddress("mailto:poi@apache.org?subject=Hyperlinks");
- cell.setHyperlink(link);
-
- //link to a place in this workbook
-
//create a target sheet and cell
HSSFSheet sheet2 = wb.createSheet("Target Sheet");
sheet2.createRow(0).createCell(0).setCellValue("Target Cell");
- cell = sheet.createRow(3).createCell(0);
+ //cell A1 has a link to 'Target Sheet-1'!A1
+ cell = sheet.createRow(0).createCell(0);
cell.setCellValue("Worksheet Link");
link = new HSSFHyperlink(HSSFHyperlink.LINK_DOCUMENT);
link.setTextMark("'Target Sheet'!A1");
cell.setHyperlink(link);
- //serialize and read again
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- wb.write(out);
+ //cell B1 has a link to cell A1 on the same sheet
+ cell = sheet.createRow(1).createCell(0);
+ cell.setCellValue("Worksheet Link");
+ link = new HSSFHyperlink(HSSFHyperlink.LINK_DOCUMENT);
+ link.setAddress("'Hyperlinks'!A1");
+ cell.setHyperlink(link);
- wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+ wb = getTestDataProvider().writeOutAndReadBack(wb);
sheet = wb.getSheet("Hyperlinks");
+
cell = sheet.getRow(0).getCell(0);
link = cell.getHyperlink();
assertNotNull(link);
- assertEquals("http://poi.apache.org/", link.getAddress());
+ assertEquals("'Target Sheet'!A1", link.getTextMark());
+ assertEquals("'Target Sheet'!A1", link.getAddress());
cell = sheet.getRow(1).getCell(0);
link = cell.getHyperlink();
assertNotNull(link);
- assertEquals("link1.xls", link.getAddress());
-
- cell = sheet.getRow(2).getCell(0);
- link = cell.getHyperlink();
- assertNotNull(link);
- assertEquals("mailto:poi@apache.org?subject=Hyperlinks", link.getAddress());
-
- cell = sheet.getRow(3).getCell(0);
- link = cell.getHyperlink();
- assertNotNull(link);
- assertEquals("'Target Sheet'!A1", link.getTextMark());
+ assertEquals("'Hyperlinks'!A1", link.getTextMark());
+ assertEquals("'Hyperlinks'!A1", link.getAddress());
}
public void testCloneSheet() {
@@ -190,7 +171,7 @@ public final class TestHSSFHyperlink extends TestCase {
* see bugs #46445 and #29957
*/
public void testShiftRows(){
- HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("46445.xls");
+ HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("46445.xls");
HSSFSheet sheet = wb.getSheetAt(0);
diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestHyperlink.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestHyperlink.java
new file mode 100755
index 0000000000..ae71841f71
--- /dev/null
+++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestHyperlink.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.ss.usermodel;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.ss.ITestDataProvider;
+
+/**
+ * Test diffrent types of Excel hyperlinks
+ *
+ * @author Yegor Kozlov
+ */
+public abstract class BaseTestHyperlink extends TestCase {
+
+ protected abstract ITestDataProvider getTestDataProvider();
+
+ public void testBasicTypes(){
+ Workbook wb = getTestDataProvider().createWorkbook();
+ CreationHelper createHelper = wb.getCreationHelper();
+
+ Cell cell;
+ Hyperlink link;
+ Sheet sheet = wb.createSheet("Hyperlinks");
+
+ //URL
+ cell = sheet.createRow(0).createCell((short) 0);
+ cell.setCellValue("URL Link");
+ link = createHelper.createHyperlink(Hyperlink.LINK_URL);
+ link.setAddress("http://poi.apache.org/");
+ cell.setHyperlink(link);
+
+ //link to a file in the current directory
+ cell = sheet.createRow(1).createCell((short) 0);
+ cell.setCellValue("File Link");
+ link = createHelper.createHyperlink(Hyperlink.LINK_FILE);
+ link.setAddress("hyperinks-beta4-dump.txt");
+ cell.setHyperlink(link);
+
+ //e-mail link
+ cell = sheet.createRow(2).createCell((short) 0);
+ cell.setCellValue("Email Link");
+ link = createHelper.createHyperlink(Hyperlink.LINK_EMAIL);
+ //note, if subject contains white spaces, make sure they are url-encoded
+ link.setAddress("mailto:poi@apache.org?subject=Hyperlinks");
+ cell.setHyperlink(link);
+
+ //link to a place in this workbook
+
+ //create a target sheet and cell
+ Sheet sheet2 = wb.createSheet("Target Sheet");
+ sheet2.createRow(0).createCell((short) 0).setCellValue("Target Cell");
+
+ cell = sheet.createRow(3).createCell((short) 0);
+ cell.setCellValue("Worksheet Link");
+ link = createHelper.createHyperlink(Hyperlink.LINK_DOCUMENT);
+ link.setAddress("'Target Sheet'!A1");
+ cell.setHyperlink(link);
+
+ wb = getTestDataProvider().writeOutAndReadBack(wb);
+
+ sheet = wb.getSheetAt(0);
+ link = sheet.getRow(0).getCell(0).getHyperlink();
+
+ assertEquals("http://poi.apache.org/", link.getAddress());
+ link = sheet.getRow(1).getCell(0).getHyperlink();
+ assertEquals("hyperinks-beta4-dump.txt", link.getAddress());
+ link = sheet.getRow(2).getCell(0).getHyperlink();
+ assertEquals("mailto:poi@apache.org?subject=Hyperlinks", link.getAddress());
+ link = sheet.getRow(3).getCell(0).getHyperlink();
+ assertEquals("'Target Sheet'!A1", link.getAddress());
+ }
+} \ No newline at end of file