blob: 0c584a0534bd939abcdaa8a1d5fedc41f23d56a9 [file] [log] [blame]
package org.apache.maven.doxia.module.twiki.parser;
/*
* 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 java.io.StringReader;
import java.util.Arrays;
import org.apache.maven.doxia.util.ByLineReaderSource;
import org.apache.maven.doxia.parser.ParseException;
/**
* Tests the {@link org.apache.maven.doxia.module.twiki.parser.ParagraphBlockParser}
*
* @author Juan F. Codagnone
* @since Nov 1, 2005
*/
public class ParagraphTest
extends AbstractBlockTestCase
{
/**
* @throws ParseException on error
*/
public final void testMultiLines()
throws ParseException
{
final String text =
"" + "\n\n\n" + "para1 -> text1\n" + "para1 -> text2\n" + "\n" + "para2 -> text1\n"
+ "para2 -> text2\n" + " \n \n " + "para2 -> text1\n" + "para2 -> text2\n";
final ByLineReaderSource source = new ByLineReaderSource( new StringReader( text ) );
final ParagraphBlockParser parser = paraParser;
ParagraphBlock block;
block = (ParagraphBlock) parser.visit( source.getNextLine(), source );
assertNotNull( block );
assertEquals( 1, block.getBlocks().length );
assertEquals( "para1 -> text1 para1 -> text2", ( (TextBlock) block.getBlocks()[0] ).getText() );
block = (ParagraphBlock) parser.visit( source.getNextLine(), source );
assertNotNull( block );
assertEquals( 1, block.getBlocks().length );
assertEquals( "para2 -> text1 para2 -> text2", ( (TextBlock) block.getBlocks()[0] ).getText() );
}
/**
* @throws ParseException on error
*/
public final void testParagraphWithList()
throws ParseException
{
final String text =
"" + "Description text:\n" + " * item1\n" + " * item2\n"
+ "This is more text in the same paragraph\n" + "\n" + "Another paragraph";
final ByLineReaderSource source = new ByLineReaderSource( new StringReader( text ) );
final ParagraphBlockParser parser = paraParser;
ParagraphBlock block;
block = (ParagraphBlock) parser.visit( source.getNextLine(), source );
assertNotNull( block );
final Block[] firstLevelChilds = block.getBlocks();
final int numberOfChilds = 3;
assertEquals( numberOfChilds, firstLevelChilds.length );
assertEquals( TextBlock.class, firstLevelChilds[0].getClass() );
assertEquals( UnorderedListBlock.class, firstLevelChilds[1].getClass() );
assertEquals( TextBlock.class, firstLevelChilds[2].getClass() );
final Block[] listChilds = ( (UnorderedListBlock) firstLevelChilds[1] ).getBlocks();
assertEquals( 2, listChilds.length );
assertEquals( 1, ( (ListItemBlock) listChilds[0] ).getBlocks().length );
assertEquals( "item1", ( (TextBlock) ( (ListItemBlock) listChilds[0] ).getBlocks()[0] ).getText() );
assertEquals( "item2", ( (TextBlock) ( (ListItemBlock) listChilds[1] ).getBlocks()[0] ).getText() );
}
/**
* tests some valid weired lists
*
* @throws ParseException on error
*/
public final void testParagraphWithStartingList()
throws ParseException
{
final String text =
"" + " * item1\n" + " * item2\n" + "This is more text in the same paragraph\n" + "\n"
+ "Another paragraph";
final ByLineReaderSource source = new ByLineReaderSource( new StringReader( text ) );
final ParagraphBlockParser parser = paraParser;
ParagraphBlock block;
block = (ParagraphBlock) parser.visit( source.getNextLine(), source );
assertNotNull( block );
final Block[] firstLevelChilds = block.getBlocks();
assertEquals( 2, firstLevelChilds.length );
assertEquals( UnorderedListBlock.class, firstLevelChilds[0].getClass() );
assertEquals( TextBlock.class, firstLevelChilds[1].getClass() );
final Block[] listChilds = ( (UnorderedListBlock) firstLevelChilds[0] ).getBlocks();
assertEquals( 2, listChilds.length );
assertEquals( 1, ( (ListItemBlock) listChilds[0] ).getBlocks().length );
assertEquals( "item1", ( (TextBlock) ( (ListItemBlock) listChilds[0] ).getBlocks()[0] ).getText() );
assertEquals( "item2", ( (TextBlock) ( (ListItemBlock) listChilds[1] ).getBlocks()[0] ).getText() );
}
/**
* @throws ParseException on error
*/
public final void testHorizontalRule()
throws ParseException
{
Block block, expected;
ByLineReaderSource source;
assertTrue( hruleParser.accept( "---" ) );
assertFalse( hruleParser.accept( "---+ asdas" ) );
source = new ByLineReaderSource( new StringReader( "" ) );
expected = new HorizontalRuleBlock();
block = hruleParser.visit( "---", source );
assertNull( source.getNextLine() );
assertEquals( expected, block );
source = new ByLineReaderSource( new StringReader( "" ) );
expected = new HorizontalRuleBlock();
block = hruleParser.visit( "--- Some text ---- And some more", source );
assertEquals( expected, block );
expected = new ParagraphBlock( new Block[] { new TextBlock( "Some text ---- And some more" ) } );
block = paraParser.visit( source.getNextLine(), source );
assertEquals( expected, block );
}
/**
* @throws ParseException on error
*/
public final void testHorizontalRuleAndParagraph()
throws ParseException
{
Block[] blocks, expected;
ByLineReaderSource source;
source = new ByLineReaderSource( new StringReader( "" + "Some text\n" + "-----------\n" + "More text" ) );
expected =
new Block[] { new ParagraphBlock( new Block[] { new TextBlock( "Some text" ) } ),
new HorizontalRuleBlock(), new ParagraphBlock( new Block[] { new TextBlock( "More text" ) } ) };
blocks = (Block[]) twikiParser.parse( source ).toArray( new Block[] {} );
assertTrue( Arrays.equals( expected, blocks ) );
}
}