| /* |
| * ==================================================================== |
| * 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.hwpf.converter; |
| |
| import static org.apache.poi.POITestCase.assertContains; |
| |
| import java.io.StringWriter; |
| |
| import javax.xml.transform.OutputKeys; |
| import javax.xml.transform.Transformer; |
| import javax.xml.transform.TransformerFactory; |
| import javax.xml.transform.dom.DOMSource; |
| import javax.xml.transform.stream.StreamResult; |
| |
| import org.apache.poi.POIDataSamples; |
| import org.apache.poi.hwpf.HWPFDocument; |
| import org.apache.poi.util.XMLHelper; |
| import org.junit.Test; |
| |
| /** |
| * Test cases for {@link WordToFoConverter} |
| */ |
| public class TestWordToFoConverter |
| { |
| private static String getFoText( final String sampleFileName ) |
| throws Exception |
| { |
| HWPFDocument hwpfDocument = new HWPFDocument( POIDataSamples |
| .getDocumentInstance().openResourceAsStream( sampleFileName ) ); |
| |
| WordToFoConverter wordToFoConverter = new WordToFoConverter( |
| XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument() ); |
| wordToFoConverter.processDocument( hwpfDocument ); |
| |
| StringWriter stringWriter = new StringWriter(); |
| |
| Transformer transformer = TransformerFactory.newInstance() |
| .newTransformer(); |
| transformer.setOutputProperty( OutputKeys.INDENT, "yes" ); |
| transformer.transform( |
| new DOMSource( wordToFoConverter.getDocument() ), |
| new StreamResult( stringWriter ) ); |
| |
| String result = stringWriter.toString(); |
| return result; |
| } |
| |
| @Test |
| public void testDocumentProperties() throws Exception |
| { |
| String result = getFoText( "documentProperties.doc" ); |
| |
| assertContains( |
| result, |
| "<dc:title xmlns:dc=\"http://purl.org/dc/elements/1.1/\">This is document title</dc:title>" ); |
| assertContains( |
| result, |
| "<pdf:Keywords xmlns:pdf=\"http://ns.adobe.com/pdf/1.3/\">This is document keywords</pdf:Keywords>" ); |
| } |
| |
| @Test |
| public void testEndnote() throws Exception |
| { |
| String result = getFoText( "endingnote.doc" ); |
| |
| assertContains( result, |
| "<fo:basic-link id=\"endnote_back_1\" internal-destination=\"endnote_1\">" ); |
| assertContains( result, |
| "<fo:inline baseline-shift=\"super\" font-size=\"smaller\">1</fo:inline>" ); |
| assertContains( result, |
| "<fo:basic-link id=\"endnote_1\" internal-destination=\"endnote_back_1\">" ); |
| assertContains( result, |
| "<fo:inline baseline-shift=\"super\" font-size=\"smaller\">1 </fo:inline>" ); |
| assertContains( result, "Ending note text" ); |
| } |
| |
| @Test |
| public void testEquation() throws Exception |
| { |
| final String sampleFileName = "equation.doc"; |
| String result = getFoText( sampleFileName ); |
| |
| assertContains( result, "<!--Image link to '0.emf' can be here-->" ); |
| } |
| |
| @Test |
| public void testHyperlink() throws Exception |
| { |
| final String sampleFileName = "hyperlink.doc"; |
| String result = getFoText( sampleFileName ); |
| |
| assertContains( result, |
| "<fo:basic-link external-destination=\"http://testuri.org/\">" ); |
| assertContains( result, "Hyperlink text" ); |
| } |
| |
| @Test |
| public void testInnerTable() throws Exception |
| { |
| final String sampleFileName = "innertable.doc"; |
| String result = getFoText( sampleFileName ); |
| |
| assertContains( result, |
| "padding-end=\"0.0in\" padding-start=\"0.0in\" width=\"1.0770833in\"" ); |
| } |
| |
| @Test |
| public void testPageBreak() throws Exception |
| { |
| final String sampleFileName = "page-break.doc"; |
| String result = getFoText( sampleFileName ); |
| |
| assertContains( result, "<fo:block break-before=\"page\"" ); |
| } |
| |
| @Test |
| public void testPageBreakBefore() throws Exception |
| { |
| final String sampleFileName = "page-break-before.doc"; |
| String result = getFoText( sampleFileName ); |
| |
| assertContains( result, "<fo:block break-before=\"page\"" ); |
| } |
| |
| @Test |
| public void testPageref() throws Exception |
| { |
| final String sampleFileName = "pageref.doc"; |
| String result = getFoText( sampleFileName ); |
| |
| assertContains( result, |
| "<fo:basic-link internal-destination=\"bookmark_userref\">" ); |
| assertContains( result, "1" ); |
| assertContains( result, "<fo:inline id=\"bookmark_userref\">" ); |
| } |
| } |