Test relating to TIKA-705 - XSLF internal hyperlinks

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1172670 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2011-09-19 15:38:59 +00:00
parent da5a8477e8
commit 7d6c26cf86

View File

@ -16,11 +16,17 @@
==================================================================== */
package org.apache.poi.xslf;
import java.net.URI;
import java.util.List;
import junit.framework.TestCase;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFRelation;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
public class TestXSLFBugs extends TestCase {
@ -61,6 +67,43 @@ public class TestXSLFBugs extends TestCase {
*/
public void testTIKA705() {
XMLSlideShow ss = XSLFTestDataSamples.openSampleDocument("with_japanese.pptx");
// TODO Check the details including the links
// Should have one slide
assertEquals(1, ss.getSlides().length);
XSLFSlide slide = ss.getSlides()[0];
// Check the relations from this
List<POIXMLDocumentPart> rels = slide.getRelations();
// Should have 6 relations:
// 1 external hyperlink (skipped from list)
// 4 internal hyperlinks
// 1 slide layout
assertEquals(5, rels.size());
int layouts = 0;
int hyperlinks = 0;
for(POIXMLDocumentPart p : rels) {
if(p.getPackageRelationship().getRelationshipType().equals(XSLFRelation.HYPERLINK.getRelation())) {
hyperlinks++;
} else if(p instanceof XSLFSlideLayout) {
layouts++;
}
}
assertEquals(1, layouts);
assertEquals(4, hyperlinks);
// Hyperlinks should all be to #_ftn1 or #ftnref1
for(POIXMLDocumentPart p : rels) {
if(p.getPackageRelationship().getRelationshipType().equals(XSLFRelation.HYPERLINK.getRelation())) {
URI target = p.getPackageRelationship().getTargetURI();
if(target.getFragment().equals("_ftn1") ||
target.getFragment().equals("_ftnref1")) {
// Good
} else {
fail("Invalid target " + target.getFragment() + " on " + target);
}
}
}
}
}