blob: ae2fba56dec498b6e963e1c32cae760ce2349868 [file] [log] [blame]
package org.apache.maven.doxia.module.xdoc;
/*
* 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.
*/
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.sink.impl.AbstractSinkTest;
import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
import org.apache.maven.doxia.util.HtmlTools;
import java.io.StringWriter;
import java.io.Writer;
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id$
* @since 1.0
*/
public class XdocSinkTest
extends AbstractSinkTest
{
/** {@inheritDoc} */
protected String outputExtension()
{
return "xml";
}
/** {@inheritDoc} */
protected Sink createSink( Writer writer )
{
return new XdocSink( writer, "UTF-8" );
}
/** {@inheritDoc} */
protected boolean isXmlSink()
{
return true;
}
/** {@inheritDoc} */
protected String getTitleBlock( String title )
{
return "<title>" + title + "</title>";
}
/** {@inheritDoc} */
protected String getAuthorBlock( String author )
{
return author;
}
/** {@inheritDoc} */
protected String getDateBlock( String date )
{
return date;
}
/** {@inheritDoc} */
protected String getHeadBlock()
{
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<document xmlns=\"http://maven.apache.org/XDOC/2.0\" "
+ "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ "xsi:schemaLocation=\"http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd\">"
+ "<properties></properties>";
}
/** {@inheritDoc} */
protected String getBodyBlock()
{
return "<body></body></document>";
}
/** {@inheritDoc} */
protected String getArticleBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getNavigationBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getSidebarBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getSectionTitleBlock( String title )
{
return title;
}
/** {@inheritDoc} */
protected String getSection1Block( String title )
{
return "<section name=\"" + title + "\"></section>";
}
/** {@inheritDoc} */
protected String getSection2Block( String title )
{
return "<subsection name=\"" + title + "\"></subsection>";
}
/** {@inheritDoc} */
protected String getSection3Block( String title )
{
return "<h4>" + title + "</h4>";
}
/** {@inheritDoc} */
protected String getSection4Block( String title )
{
return "<h5>" + title + "</h5>";
}
/** {@inheritDoc} */
protected String getSection5Block( String title )
{
return "<h6>" + title + "</h6>";
}
/** {@inheritDoc} */
protected String getHeaderBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getContentBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getFooterBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getListBlock( String item )
{
return "<ul>\n<li>" + item + "</li></ul>";
}
/** {@inheritDoc} */
protected String getNumberedListBlock( String item )
{
return "<ol style=\"list-style-type: lower-roman\">\n<li>" + item + "</li></ol>";
}
/** {@inheritDoc} */
protected String getDefinitionListBlock( String definum, String definition )
{
return "<dl>\n<dt>" + definum + "</dt>\n<dd>" + definition + "</dd></dl>";
}
/** {@inheritDoc} */
protected String getFigureBlock( String source, String caption )
{
String figureBlock = "<img src=\"" + source + "\"";
if ( caption != null )
{
figureBlock += " alt=\"" + caption + "\"";
}
else //@todo fix DOXIA-361
{
figureBlock += " alt=\"\"";
}
figureBlock += " />";
return figureBlock;
}
/** {@inheritDoc} */
protected String getTableBlock( String cell, String caption )
{
return "<table border=\"0\"><caption>" + caption
+ "</caption>\n<tr valign=\"top\">\n<td>" + cell + "</td></tr></table>";
}
/** {@inheritDoc} */
protected String getParagraphBlock( String text )
{
return "<p>" + text + "</p>";
}
/** {@inheritDoc} */
protected String getDataBlock( String value, String text )
{
return text;
}
/** {@inheritDoc} */
protected String getTimeBlock( String datetime, String text )
{
return text;
}
/** {@inheritDoc} */
protected String getAddressBlock( String text )
{
return "<address>" + text + "</address>";
}
/** {@inheritDoc} */
protected String getBlockquoteBlock( String text )
{
return "<blockquote>" + text + "</blockquote>";
}
/** {@inheritDoc} */
protected String getDivisionBlock( String text )
{
return "<div>" + text + "</div>";
}
/** {@inheritDoc} */
protected String getVerbatimBlock( String text )
{
return "<source>" + text + "</source>";
}
/** {@inheritDoc} */
protected String getHorizontalRuleBlock()
{
return "<hr />";
}
/** {@inheritDoc} */
protected String getPageBreakBlock()
{
return "<!-- PB -->";
}
/** {@inheritDoc} */
protected String getAnchorBlock( String anchor )
{
return "<a name=\"" + anchor + "\">" + anchor + "</a>";
}
/** {@inheritDoc} */
protected String getLinkBlock( String link, String text )
{
return "<a href=\"" + link + "\">" + text + "</a>";
}
/** {@inheritDoc} */
protected String getInlineBlock( String text )
{
return text;
}
/** {@inheritDoc} */
protected String getInlineItalicBlock( String text )
{
return "<i>" + text + "</i>";
}
/** {@inheritDoc} */
protected String getInlineBoldBlock( String text )
{
return "<b>" + text + "</b>";
}
/** {@inheritDoc} */
protected String getInlineCodeBlock( String text )
{
return "<code>" + text + "</code>";
}
/** {@inheritDoc} */
protected String getItalicBlock( String text )
{
return "<i>" + text + "</i>";
}
/** {@inheritDoc} */
protected String getBoldBlock( String text )
{
return "<b>" + text + "</b>";
}
/** {@inheritDoc} */
protected String getMonospacedBlock( String text )
{
return "<tt>" + text + "</tt>";
}
/** {@inheritDoc} */
protected String getLineBreakBlock()
{
return "<br />";
}
/** {@inheritDoc} */
protected String getLineBreakOpportunityBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getNonBreakingSpaceBlock()
{
return "&#160;";
}
/** {@inheritDoc} */
protected String getTextBlock( String text )
{
// TODO: need to be able to retreive those from outside the sink
return HtmlTools.escapeHTML( text );
}
/** {@inheritDoc} */
protected String getRawTextBlock( String text )
{
return "~,_=,_-,_+,_*,_[,_],_<,_>,_{,_},_\\";
}
/**
* Test verbatim.
*/
public void testBoxedVerbatim()
{
Writer writer = new StringWriter();
XdocSink sink = null;
try
{
sink = new XdocSink( writer );
sink.verbatim( null );
sink.verbatim_();
sink.verbatim( SinkEventAttributeSet.BOXED );
sink.verbatim_();
sink.verbatim( new SinkEventAttributeSet( new String[] {SinkEventAttributeSet.WIDTH, "20%"} ) );
sink.verbatim_();
}
finally
{
sink.close();
}
assertEquals( "<pre></pre><source></source>\n<pre width=\"20%\"></pre>", writer.toString() );
}
/**
* Test link.
*/
public void testLinkWithTarget()
{
Writer writer = new StringWriter();
XdocSink sink = null;
try
{
sink = new XdocSink( writer );
sink.link( "name", (String) null );
sink.link_();
sink.link( "name", "nirvana" );
sink.link_();
}
finally
{
sink.close();
}
assertEquals( "<a href=\"name\"></a><a href=\"name\" target=\"nirvana\"></a>", writer.toString() );
}
/** {@inheritDoc} */
protected String getCommentBlock( String text )
{
return "<!--" + toXmlComment( text ) + "-->";
}
}