/**
* Copyright (C) 2011-2015 The XDocReport Team <xdocreport@googlegroups.com>
*
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package fr.opensagres.xdocreport.document.odt.textstyling;
import junit.framework.Assert;
import org.junit.Test;
import fr.opensagres.xdocreport.document.odt.template.ODTContextHelper;
import fr.opensagres.xdocreport.document.preprocessor.sax.BufferedElement;
import fr.opensagres.xdocreport.document.textstyling.IDocumentHandler;
import fr.opensagres.xdocreport.document.textstyling.ITextStylingTransformer;
import fr.opensagres.xdocreport.document.textstyling.html.HTMLTextStylingTransformer;
import fr.opensagres.xdocreport.template.IContext;
public class ODTDocumentHandlerTestCase
{
@Test
public void testSpecialCharacter()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "ä ü é", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_EmptyText\" >ä </text:span><text:span text:style-name=\"XDocReport_EmptyText\" >ü </text:span><text:span text:style-name=\"XDocReport_EmptyText\" >é</text:span>",
handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testSpecialCharacterAmp()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "&<", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_EmptyText\" >&</text:span><text:span text:style-name=\"XDocReport_EmptyText\" ><</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testNbsp()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<b>A B</b>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_Bold\" >A B</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testBoldWithB()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<b>text</b>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_Bold\" >text</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testBoldWithStrong()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<strong>text</strong>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_Bold\" >text</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testBoldWithSpanFontWeightBold()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<span style=\"font-weight: bold\">text</span>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_T0\" style:family=\"text\"><style:text-properties fo:font-weight=\"bold\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_T0\" >text</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testBoldWithSpanFontWeight700()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<span style=\"font-weight: 700\">text</span>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_T0\" style:family=\"text\"><style:text-properties fo:font-weight=\"bold\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_T0\" >text</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testBoldWithPFontWeightBold()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"font-weight: bold\">text</p>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_P0\" style:family=\"paragraph\"><style:text-properties fo:font-weight=\"bold\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_P0\"><text:span text:style-name=\"XDocReport_EmptyText\" >text</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testBoldWithPFontWeight700()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"font-weight: 700\">text</p>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_P0\" style:family=\"paragraph\"><style:text-properties fo:font-weight=\"bold\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_P0\"><text:span text:style-name=\"XDocReport_EmptyText\" >text</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testItalicWithI()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<i>text</i>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_Italic\" >text</text:span>",
handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testItalicWithEm()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<em>text</em>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_Italic\" >text</text:span>",
handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testItalicWithSpanFontStyleItalic()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<span style=\"font-style: italic\">text</span>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_T0\" style:family=\"text\"><style:text-properties fo:font-style=\"italic\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_T0\" >text</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testItalicWithPFontStyleItalic()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"font-style: italic\">text</p>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_P0\" style:family=\"paragraph\"><style:text-properties fo:font-style=\"italic\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_P0\"><text:span text:style-name=\"XDocReport_EmptyText\" >text</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testUnderline()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<u>text</u>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_Underline\" >text</text:span>",
handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testUnderLineWithSpanTextDecorationUnderline()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<span style=\"text-decoration: underline\">text</span>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_T0\" style:family=\"text\"><style:text-properties style:text-underline-style=\"solid\" style:text-underline-width=\"auto\" style:text-underline-color=\"font-color\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_T0\" >text</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testUnderLineWithPTextDecorationUnderline()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"text-decoration: underline\">text</p>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_P0\" style:family=\"paragraph\"><style:text-properties style:text-underline-style=\"solid\" style:text-underline-width=\"auto\" style:text-underline-color=\"font-color\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_P0\"><text:span text:style-name=\"XDocReport_EmptyText\" >text</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testStrikeWithS()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<s>text</s>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_Strike\" >text</text:span>",
handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testStrikeWithStrike()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<strike>text</strike>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_Strike\" >text</text:span>",
handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testStrikeWithSpanTextDecorationLineThrough()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<span style=\"text-decoration: line-through\">text</span>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_T0\" style:family=\"text\"><style:text-properties style:text-underline-style=\"none\" style:text-line-through-style=\"solid\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_T0\" >text</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testStrikeWithPTextDecorationLineThrough()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"text-decoration: line-through\">text</p>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_P0\" style:family=\"paragraph\"><style:text-properties style:text-underline-style=\"none\" style:text-line-through-style=\"solid\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_P0\"><text:span text:style-name=\"XDocReport_EmptyText\" >text</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testUnderlineStrikeWithSpanTextDecorationUnderlineLineThrough()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<span style=\"text-decoration: underline line-through\">text</span>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_T0\" style:family=\"text\"><style:text-properties style:text-underline-style=\"solid\" style:text-underline-width=\"auto\" style:text-underline-color=\"font-color\" style:text-line-through-style=\"solid\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_T0\" >text</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testUnderlineStrikeWithPTextDecorationUnderlineLineThrough()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"text-decoration: underline line-through\">text</p>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_P0\" style:family=\"paragraph\"><style:text-properties style:text-underline-style=\"solid\" style:text-underline-width=\"auto\" style:text-underline-color=\"font-color\" style:text-line-through-style=\"solid\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_P0\"><text:span text:style-name=\"XDocReport_EmptyText\" >text</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testSubscriptWithSub()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<sub>text</sub>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_Subscript\" >text</text:span>",
handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testSubscriptWithSpanVerticalAlignSub()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<span style=\"vertical-align: sub\">text</span>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_T0\" style:family=\"text\"><style:text-properties style:text-position=\"sub\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_T0\" >text</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testSubscriptWithPVerticalAlignSub()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"vertical-align: sub\">text</p>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_P0\" style:family=\"paragraph\"><style:text-properties style:text-position=\"sub\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_P0\"><text:span text:style-name=\"XDocReport_EmptyText\" >text</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testSuperscriptWithSup()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<sup>text</sup>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_Superscript\" >text</text:span>",
handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testSuperscriptWithSpanVerticalAlignSuper()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<span style=\"vertical-align: super\">text</span>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_T0\" style:family=\"text\"><style:text-properties style:text-position=\"super\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_T0\" >text</text:span>", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testSuperscriptWithPVerticalAlignSuper()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"vertical-align: super\">text</p>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_P0\" style:family=\"paragraph\"><style:text-properties style:text-position=\"super\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_P0\"><text:span text:style-name=\"XDocReport_EmptyText\" >text</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testHyperlinkByUsingXDocReport_HyperlinkStyle()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<a href=\"http://code.google.com/p/xdocreport/\" >XDocReport</a>", handler );
// Assert.assertEquals( "", handler.getTextBefore() );
// Assert.assertEquals(
// "<w:hyperlink r:id=\"___rId0\" w:history=\"1\"> <w:proofErr w:type=\"spellStart\" /><w:r w:rsidRPr=\"001D30B5\"><w:rPr><w:rStyle w:val=\"XDocReport_Hyperlink\" /></w:rPr><w:t>XDocReport</w:t></w:r><w:proofErr w:type=\"spellEnd\" /></w:hyperlink>",
// handler.getTextBody() );
// Assert.assertEquals( "", handler.getTextEnd() );
// HyperlinkRegistry registry = ODTContextHelper.getHyperlinkRegistry( context, "content.xml" );
// Assert.assertNotNull( registry );
// Assert.assertEquals( 1, registry.getHyperlinks().size() );
//
// HyperlinkInfo hyperlinkInfo = registry.getHyperlinks().get( 0 );
// Assert.assertEquals( "___rId0", hyperlinkInfo.getId() );
// Assert.assertEquals( "http://code.google.com/p/xdocreport/", hyperlinkInfo.getTarget() );
// Assert.assertEquals( "External", hyperlinkInfo.getTargetMode() );
}
@Test
public void testHyperlinkByUsingDefaultHyperlinkStyle()
throws Exception
{
IContext context = new MockContext();
// Add default style (in real context, this DefaultStyle is added by ODTStylesPreprocessor which search
// hyperlink style from the word/styles.xml entry of the docx)
// DefaultStyle defaultStyle = new DefaultStyle();
// defaultStyle.setHyperLinkStyleId( "DefaultHyperlink" );
// ODTContextHelper.putDefaultStyle( context, defaultStyle );
//
// BufferedElement parent = null;
//
// ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
// IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
// formatter.transform( "<a href=\"http://code.google.com/p/xdocreport/\" >XDocReport</a>", handler );
//
// Assert.assertEquals( "", handler.getTextBefore() );
// Assert.assertEquals(
// "<w:hyperlink r:id=\"___rId0\" w:history=\"1\"> <w:proofErr w:type=\"spellStart\" /><w:r w:rsidRPr=\"001D30B5\"><w:rPr><w:rStyle w:val=\"DefaultHyperlink\" /></w:rPr><w:t>XDocReport</w:t></w:r><w:proofErr w:type=\"spellEnd\" /></w:hyperlink>",
// handler.getTextBody() );
// Assert.assertEquals( "", handler.getTextEnd() );
//
// HyperlinkRegistry registry = ODTContextHelper.getHyperlinkRegistry( context, "content.xml" );
// Assert.assertNotNull( registry );
// Assert.assertEquals( 1, registry.getHyperlinks().size() );
//
// HyperlinkInfo hyperlinkInfo = registry.getHyperlinks().get( 0 );
// Assert.assertEquals( "___rId0", hyperlinkInfo.getId() );
// Assert.assertEquals( "http://code.google.com/p/xdocreport/", hyperlinkInfo.getTarget() );
// Assert.assertEquals( "External", hyperlinkInfo.getTargetMode() );
}
@Test
public void testHeaderByUsingXDocReport_HeadingStyle()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "xxx<h1>Title1</h1><h2>Title2</h2><h3>Title3</h3><h4>Title4</h4><h5>Title5</h5><h6>Title6</h6>",
handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_EmptyText\" >xxx</text:span>", handler.getTextBody() );
Assert.assertEquals( "<text:h text:style-name=\"Heading_20_1\" text:outline-level=\"1\">Title1</text:h>"
+ "<text:h text:style-name=\"Heading_20_2\" text:outline-level=\"2\">Title2</text:h>"
+ "<text:h text:style-name=\"Heading_20_3\" text:outline-level=\"3\">Title3</text:h>"
+ "<text:h text:style-name=\"Heading_20_4\" text:outline-level=\"4\">Title4</text:h>"
+ "<text:h text:style-name=\"Heading_20_5\" text:outline-level=\"5\">Title5</text:h>"
+ "<text:h text:style-name=\"Heading_20_6\" text:outline-level=\"6\">Title6</text:h>", handler.getTextEnd() );
}
@Test
public void testHeaderByUsingDefaultHeadingStyle()
throws Exception
{
IContext context = new MockContext();
// Add default style (in real context, this DefaultStyle is added by ODTStylesPreprocessor which search
// heading style from the word/styles.xml entry of the docx)
// DefaultStyle defaultStyle = new DefaultStyle();
// defaultStyle.addHeaderStyle( 1, "Heading1" );
// defaultStyle.addHeaderStyle( 2, "Heading2" );
// ODTContextHelper.putDefaultStyle( context, defaultStyle );
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "xxx<h1>Title1</h1><h2>Title2</h2><h3>Title3</h3><h4>Title4</h4><h5>Title5</h5><h6>Title6</h6>",
handler );
// Assert.assertEquals( "", handler.getTextBefore() );
// Assert.assertEquals( "<w:r><w:t xml:space=\"preserve\" >xxx</w:t></w:r>", handler.getTextBody() );
// Assert.assertEquals( "<w:p><w:pPr><w:pStyle w:val=\"Heading1\" /></w:pPr><w:r><w:t>Title1</w:t></w:r></w:p>"
// + "<w:p><w:pPr><w:pStyle w:val=\"Heading2\" /></w:pPr><w:r><w:t>Title2</w:t></w:r></w:p>"
// + "<w:p><w:pPr><w:pStyle w:val=\"XDocReport_Heading_3\" /></w:pPr><w:r><w:t>Title3</w:t></w:r></w:p>"
// + "<w:p><w:pPr><w:pStyle w:val=\"XDocReport_Heading_4\" /></w:pPr><w:r><w:t>Title4</w:t></w:r></w:p>"
// + "<w:p><w:pPr><w:pStyle w:val=\"XDocReport_Heading_5\" /></w:pPr><w:r><w:t>Title5</w:t></w:r></w:p>"
// + "<w:p><w:pPr><w:pStyle w:val=\"XDocReport_Heading_6\" /></w:pPr><w:r><w:t>Title6</w:t></w:r></w:p>",
// handler.getTextEnd() );
}
@Test
public void testHeaderAndText()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<h1>Title1</h1>paragraph1", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:h text:style-name=\"Heading_20_1\" text:outline-level=\"1\">Title1</text:h>"
+ "<text:p><text:span text:style-name=\"XDocReport_EmptyText\" >paragraph1</text:span></text:p>", handler.getTextEnd() );
}
@Test
public void testHeaderAndTextInParagraph()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<h1>Title1</h1><p>paragraph1</p>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:h text:style-name=\"Heading_20_1\" text:outline-level=\"1\">Title1</text:h>"
+ "<text:p><text:span text:style-name=\"XDocReport_EmptyText\" >paragraph1</text:span></text:p>", handler.getTextEnd() );
}
@Test
public void testHeaderAndTextAndParagraph()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<h1>Title1</h1>text<p>paragraph</p>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:h text:style-name=\"Heading_20_1\" text:outline-level=\"1\">Title1</text:h><text:p><text:span text:style-name=\"XDocReport_EmptyText\" >text</text:span><text:p><text:span text:style-name=\"XDocReport_EmptyText\" >paragraph</text:span></text:p></text:p>",
handler.getTextEnd() );
}
@Test
public void testParagraphAtFirst()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p>bla bla bla</p>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p><text:span text:style-name=\"XDocReport_EmptyText\" >bla bla bla</text:span></text:p>", handler.getTextEnd() );
}
@Test
public void testParagraph()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "some <strong>text</strong><p>paragraph1</p><p>paragraph2</p>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_EmptyText\" >some </text:span><text:span text:style-name=\"XDocReport_Bold\" >text</text:span>",
handler.getTextBody() );
Assert.assertEquals( "<text:p><text:span text:style-name=\"XDocReport_EmptyText\" >paragraph1</text:span></text:p><text:p><text:span text:style-name=\"XDocReport_EmptyText\" >paragraph2</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testOrderedList()
throws Exception
{
IContext context = new MockContext();
// Add default style (in real context, this DefaultStyle is added by ODTNumberingPreprocessor which search
// numbering from the word/numbering.xml entry of the docx)
// DefaultStyle defaultStyle = new DefaultStyle();
// //defaultStyle.setNumIdForOrdererList( 2 );
// ODTContextHelper.putDefaultStyle( context, defaultStyle );
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<ol><li>item1</li><li>item2</li></ol>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:list text:style-name=\"XDocReport_OL\">"
+ "<text:list-item text:style-name=\"XDocReport_OL\">" + "<text:p text:style-name=\"XDocReport_OL_P\">"
+ "<text:span text:style-name=\"XDocReport_EmptyText\" >item1</text:span>" + "</text:p>" + "</text:list-item>"
+ "<text:list-item text:style-name=\"XDocReport_OL\">" + "<text:p text:style-name=\"XDocReport_OL_P\">"
+ "<text:span text:style-name=\"XDocReport_EmptyText\" >item2</text:span>" + "</text:p>" + "</text:list-item>" + "</text:list>", handler.getTextEnd() );
}
@Test
public void testOrderedListWithSpaceAfterOL()
throws Exception
{
IContext context = new MockContext();
// Add default style (in real context, this DefaultStyle is added by ODTNumberingPreprocessor which search
// numbering from the word/numbering.xml entry of the docx)
// DefaultStyle defaultStyle = new DefaultStyle();
// //defaultStyle.setNumIdForOrdererList( 2 );
// ODTContextHelper.putDefaultStyle( context, defaultStyle );
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<ol> <li>item1</li><li>item2</li></ol>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:list text:style-name=\"XDocReport_OL\">"
+ "<text:list-item text:style-name=\"XDocReport_OL\">" + "<text:p text:style-name=\"XDocReport_OL_P\">"
+ "<text:span text:style-name=\"XDocReport_EmptyText\" >item1</text:span>" + "</text:p>" + "</text:list-item>"
+ "<text:list-item text:style-name=\"XDocReport_OL\">" + "<text:p text:style-name=\"XDocReport_OL_P\">"
+ "<text:span text:style-name=\"XDocReport_EmptyText\" >item2</text:span>" + "</text:p>" + "</text:list-item>" + "</text:list>", handler.getTextEnd() );
}
@Test
public void testUnorderedList()
throws Exception
{
IContext context = new MockContext();
// Add default style (in real context, this DefaultStyle is added by ODTNumberingPreprocessor which search
// numbering from the word/numbering.xml entry of the docx)
// DefaultStyle defaultStyle = new DefaultStyle();
// //defaultStyle.setNumIdForUnordererList( 1 );
// ODTContextHelper.putDefaultStyle( context, defaultStyle );
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<ol><li>item1</li><li>item2</li></ol><ul><li>item1</li><li>item2</li></ul>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:list text:style-name=\"XDocReport_OL\"><text:list-item text:style-name=\"XDocReport_OL\"><text:p text:style-name=\"XDocReport_OL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >item1</text:span></text:p></text:list-item><text:list-item text:style-name=\"XDocReport_OL\"><text:p text:style-name=\"XDocReport_OL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >item2</text:span></text:p></text:list-item></text:list><text:list text:style-name=\"XDocReport_UL\"><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >item1</text:span></text:p></text:list-item><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >item2</text:span></text:p></text:list-item></text:list>",
handler.getTextEnd() );
}
@Test
public void testOrderedAndUnorderedList()
throws Exception
{
IContext context = new MockContext();
// Add default style (in real context, this DefaultStyle is added by ODTNumberingPreprocessor which search
// numbering from the word/numbering.xml entry of the docx)
// DefaultStyle defaultStyle = new DefaultStyle();
// //defaultStyle.setNumIdForUnordererList( 1 );
// ODTContextHelper.putDefaultStyle( context, defaultStyle );
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<ul><li>item1</li><li>item2</li></ul>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:list text:style-name=\"XDocReport_UL\"><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >item1</text:span></text:p></text:list-item><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >item2</text:span></text:p></text:list-item></text:list>",
handler.getTextEnd() );
}
@Test
public void testComplexList()
throws Exception
{
IContext context = new MockContext();
// Add default style (in real context, this DefaultStyle is added by ODTNumberingPreprocessor which search
// numbering from the word/numbering.xml entry of the docx)
// DefaultStyle defaultStyle = new DefaultStyle();
// //defaultStyle.setNumIdForUnordererList( 1 );
// ODTContextHelper.putDefaultStyle( context, defaultStyle );
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<ul>" + "<li>" + "<strong>Bold</strong> style." + "<ul>" + "<li>zaza</li>"
+ "<li>zaza</li>" + "<li>zaza</li>" + "</ul>" + "</li>" + "<li><em>Italic</em> style." + "<ul>"
+ "<li>zazaaa</li>" + "<li>zzzzzzzzzzzz" + "<ul>" + "<li>ddddddddddddddddddd</li>" + "</ul>" + "</li>"
+ "</ul>" + "</li>" + "<li><strong><em>BoldAndItalic</em></strong> style." + "</li>" + "</ul>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:list text:style-name=\"XDocReport_UL\"><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_Bold\" >Bold</text:span><text:span text:style-name=\"XDocReport_EmptyText\" > style.</text:span></text:p><text:list text:style-name=\"XDocReport_UL\"><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >zaza</text:span></text:p></text:list-item><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >zaza</text:span></text:p></text:list-item><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >zaza</text:span></text:p></text:list-item></text:list></text:list-item><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_Italic\" >Italic</text:span><text:span text:style-name=\"XDocReport_EmptyText\" > style.</text:span></text:p><text:list text:style-name=\"XDocReport_UL\"><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >zazaaa</text:span></text:p></text:list-item><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >zzzzzzzzzzzz</text:span></text:p><text:list text:style-name=\"XDocReport_UL\"><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_EmptyText\" >ddddddddddddddddddd</text:span></text:p></text:list-item></text:list></text:list-item></text:list></text:list-item><text:list-item text:style-name=\"XDocReport_UL\"><text:p text:style-name=\"XDocReport_UL_P\"><text:span text:style-name=\"XDocReport_Bold\" ><text:span text:style-name=\"XDocReport_Italic\" >BoldAndItalic</text:span></text:span><text:span text:style-name=\"XDocReport_EmptyText\" > style.</text:span></text:p></text:list-item></text:list>",
handler.getTextEnd() );
}
@Test
public void testPageBreakBefore()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"page-break-before:always;\">bla bla bla</p>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_ParaBreakBefore\"><text:span text:style-name=\"XDocReport_EmptyText\" >bla bla bla</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testPageBreakAfter()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"page-break-after:always;\">bla bla bla</p>", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_ParaBreakAfter\"><text:span text:style-name=\"XDocReport_EmptyText\" >bla bla bla</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testLineBreak()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "a<br/>b", handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "<text:span text:style-name=\"XDocReport_EmptyText\" >a</text:span><text:line-break /><text:span text:style-name=\"XDocReport_EmptyText\" >b</text:span>",
handler.getTextBody() );
Assert.assertEquals( "", handler.getTextEnd() );
}
@Test
public void testAll()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
context.put( "comments_html", "<b>Bold</b> text" );
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p>\r\n\tHere are severals styles :</p>\r\n<ul>\r\n\t<li>\r\n\t\t<strong>Bold</strong> style.</li>\r\n\t<li>\r\n\t\t<em>Italic</em> style.</li>\r\n\t<li>\r\n\t\t<strong><em>BoldAndItalic</em></strong> style.</li>\r\n</ul>\r\n<p>\r\n\tHere are 3 styles :</p>\r\n<ol>\r\n\t<li>\r\n\t\t<strong>Bold</strong> style.</li>\r\n\t<li>\r\n\t\t<em>Italic</em> style.</li>\r\n\t<li>\r\n\t\t<strong><em>BoldAndItalic</em></strong> style.</li>\r\n</ol>\r\n<p>\r\n\tXDocReport can manage thoses styles.</p>\r\n<h1>\r\n\tsqsq</h1>\r\n<p>\r\n\tzazazaa</p>\r\n ",
handler );
// System.err.println(handler.getTextEnd());
}
@Test
public void testMultipleSpans()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p>Before <span style=\"text-decoration: underline;\">Underline <span style=\"font-weight: bold;\">and bold <span style=\"font-style: italic;\">and italic</span>"
+ " No italics</span> No bold</span> No Underline</p>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_T0\" style:family=\"text\"><style:text-properties style:text-underline-style=\"solid\" style:text-underline-width=\"auto\" style:text-underline-color=\"font-color\" /></style:style><style:style style:name=\"XDocReport_T1\" style:family=\"text\"><style:text-properties fo:font-weight=\"bold\" /></style:style><style:style style:name=\"XDocReport_T2\" style:family=\"text\"><style:text-properties fo:font-style=\"italic\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p><text:span text:style-name=\"XDocReport_EmptyText\" >Before </text:span><text:span text:style-name=\"XDocReport_T0\" >Underline <text:span text:style-name=\"XDocReport_T1\" >and bold <text:span text:style-name=\"XDocReport_T2\" >and italic</text:span> No italics</text:span> No bold</text:span><text:span text:style-name=\"XDocReport_EmptyText\" > No Underline</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testSpansInP()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<p style=\"font-weight:bold;font-style:italic;\" >AAA<span>BBB</span></p>", handler );
// styles.xml
IODTStylesGenerator styleGen = ODTContextHelper.getStylesGenerator( context );
Assert.assertNotNull( styleGen );
Assert.assertEquals( "<style:style style:name=\"XDocReport_P0\" style:family=\"paragraph\"><style:text-properties fo:font-weight=\"bold\" fo:font-style=\"italic\" /></style:style>",
styleGen.getDynamicStyles() );
// content.xml
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<text:p text:style-name=\"XDocReport_P0\"><text:span text:style-name=\"XDocReport_EmptyText\" >AAA</text:span><text:span text:style-name=\"XDocReport_EmptyText\" >BBB</text:span></text:p>",
handler.getTextEnd() );
}
@Test
public void testTable()
throws Exception
{
IContext context = new MockContext();
BufferedElement parent = null;
ITextStylingTransformer formatter = HTMLTextStylingTransformer.INSTANCE;
IDocumentHandler handler = new ODTDocumentHandler( parent, context, "content.xml" );
formatter.transform( "<table><tbody>"
+ "<tr><td>A</td><td>B</td></tr>"
+ "<tr><td>C</td><td>D</td></tr>"
+ "<tr><td>E</td><td>F</td></tr>"
+ "</tbody></table>",
handler );
Assert.assertEquals( "", handler.getTextBefore() );
Assert.assertEquals( "", handler.getTextBody() );
Assert.assertEquals( "<table:table>"
+ "<table:table-column table:number-columns-repeated=\"2\" ></table:table-column>"
+ "<table:table-row><table:table-cell><text:p><text:span text:style-name=\"XDocReport_EmptyText\" >A</text:span></text:p></table:table-cell><table:table-cell><text:p><text:span text:style-name=\"XDocReport_EmptyText\" >B</text:span></text:p></table:table-cell></table:table-row>"
+ "<table:table-row><table:table-cell><text:p><text:span text:style-name=\"XDocReport_EmptyText\" >C</text:span></text:p></table:table-cell><table:table-cell><text:p><text:span text:style-name=\"XDocReport_EmptyText\" >D</text:span></text:p></table:table-cell></table:table-row>"
+ "<table:table-row><table:table-cell><text:p><text:span text:style-name=\"XDocReport_EmptyText\" >E</text:span></text:p></table:table-cell><table:table-cell><text:p><text:span text:style-name=\"XDocReport_EmptyText\" >F</text:span></text:p></table:table-cell></table:table-row>"
+ "</table:table>",
handler.getTextEnd() );
}
}