package org.codehaus.mojo.jalopy;
/*
* Copyright 2001-2005 The Codehaus.
*
* Licensed 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.plugin.testing.AbstractMojoTestCase;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.util.FileUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import java.util.StringTokenizer;
/**
* @description Test case for JalopyMojo.java
* @author <a href="mailto:jruiz@exist.com">Johnny R. Ruiz III</a>
* @version $Id$
*/
public class JalopyMojoTest
extends AbstractMojoTestCase
{
JalopyMojo jalopy;
String baseDir = System.getProperty( "basedir" );
protected void setUp()
throws Exception
{
super.setUp();
File config = new File( getBasedir(), "src/test/plugin-configs/jalopy-plugin-config.xml" );
jalopy = (JalopyMojo) lookupMojo("format", config);
baseDir = PlexusTestCase.getBasedir();
}
public void testIfInputFilesIsNotYetJalopyFormatted()
throws IOException
{
recopyInputFiles();
assertTrue( compareTextFiles( new File( baseDir, "src/test/resources/input/test/Circle.java" ),
new File( baseDir, "target/test-classes/input-bak/Circle.java" ) ) );
assertTrue( compareTextFiles( new File( baseDir, "src/test/resources/input/src/Rectangle.java" ),
new File( baseDir, "target/test-classes/input-bak/Rectangle.java" ) ) );
assertTrue( compareTextFiles( new File( baseDir, "src/test/resources/input/test/Point.java" ),
new File( baseDir, "target/test-classes/input-bak/Point.java" ) ) );
assertTrue( compareTextFiles( new File( baseDir, "src/test/resources/input/src/Point.java" ),
new File( baseDir, "target/test-classes/input-bak/Point.java" ) ) );
}
public void testExecute()
{
jalopy.setFailOnError( true );
jalopy.setFileFormat( "auto" );
jalopy.setSourceDirectory( new File( baseDir, "src/test/resources/input/src" ) );
jalopy.setSrcExcludesPattern( "Point.java" );
jalopy.setSrcIncludesPattern( "Rectangle.java" );
jalopy.setTestSourceDirectory( new File( baseDir, "src/test/resources/input/test" ) );
jalopy.setTestExcludesPattern( "" );
jalopy.setTestIncludesPattern( "*.java" );
jalopy.setHistory( "none" );
try
{
jalopy.execute();
assertFalse( compareTextFiles( new File( baseDir, "src/test/resources/input/test/Circle.java" ),
new File( baseDir, "target/test-classes/input-bak/Circle.java" ) ) );
assertFalse( compareTextFiles( new File( baseDir, "src/test/resources/input/src/Rectangle.java" ),
new File( baseDir, "target/test-classes/input-bak/Rectangle.java" ) ) );
assertFalse( compareTextFiles( new File( baseDir, "src/test/resources/input/test/Point.java" ),
new File( baseDir, "target/test-classes/input-bak/Point.java" ) ) );
assertTrue( compareTextFiles( new File( baseDir, "src/test/resources/input/src/Point.java" ),
new File( baseDir, "target/test-classes/input-bak/Point.java" ) ) );
}
catch ( Exception e )
{
e.printStackTrace();
}
}
public void testIfSourceInputFilesWasFormatted()
throws IOException
{
assertTrue( compareTextFiles( new File( baseDir, "src/test/resources/validator/Maven1-Jalopy-Converted-Rectangle.java" ),
new File( baseDir,
"target/test-classes/validator/Maven1-Jalopy-Converted-Rectangle.java" ) ) );
}
public void testIfExcludedFilesNotFormatted()
throws IOException
{
assertTrue( compareTextFiles( new File( baseDir, "src/test/resources/input/src/Point.java" ),
new File( baseDir, "target/test-classes/input-bak/Point.java" ) ) );
}
public void testIfTestInputFilesAllFormatted()
throws IOException
{
assertTrue( compareTextFiles( new File( baseDir, "src/test/resources/validator/Maven1-Jalopy-Converted-Circle.java" ),
new File( baseDir,
"target/test-classes/validator/Maven1-Jalopy-Converted-Circle.java" ) ) );
assertTrue( compareTextFiles( new File( baseDir, "src/test/resources/validator/Maven1-Jalopy-Converted-Point.java" ),
new File( baseDir,
"target/test-classes/validator/Maven1-Jalopy-Converted-Point.java" ) ) );
assertTrue( compareTextFiles( new File( baseDir, "src/test/resources/validator/Maven1-Jalopy-Converted-Rectangle.java" ),
new File( baseDir,
"target/test-classes/validator/Maven1-Jalopy-Converted-Rectangle.java" ) ) );
deleteInputFiles();
}
public void testSetGetFileFormat()
{
jalopy.setFileFormat( "fileFormat" );
assertEquals( "fileFormat", jalopy.getFileFormat() );
}
public void testSetIsFailOnError()
{
jalopy.setFailOnError( true );
assertEquals( true, jalopy.isFailOnError() );
}
public void testSetGetSourceDirectory()
{
jalopy.setSourceDirectory( new File( "src/test" ) );
assertEquals( new File( "src/test" ), jalopy.getSourceDirectory() );
}
public void testSetGetSrcIncludesPattern()
{
jalopy.setSrcIncludesPattern( "**.*" );
assertEquals( "**.*", jalopy.getSrcIncludesPattern() );
}
public void testSetGetSrcExcludesPattern()
{
jalopy.setSrcExcludesPattern( "**.pro" );
assertEquals( "**.pro", jalopy.getSrcExcludesPattern() );
}
public void testSetGetHistory()
{
jalopy.setHistory( "history" );
assertEquals( "history", jalopy.getHistory() );
}
private boolean compareTextFiles( File f1, File f2 )
throws FileNotFoundException, IOException
{
String text1 = getTextContents( f1 );
String text2 = getTextContents( f2 );
StringTokenizer tokenizer1 = new StringTokenizer( text1, "\n" );
StringTokenizer tokenizer2 = new StringTokenizer( text2, "\n" );
if ( tokenizer1.countTokens() != tokenizer2.countTokens() )
{
return false;
}
while ( tokenizer1.hasMoreTokens() )
{
if ( !tokenizer1.nextToken().equalsIgnoreCase( tokenizer2.nextToken() ) )
{
return false;
}
}
return true;
}
private String getTextContents( File f )
throws FileNotFoundException, IOException
{
FileInputStream fIn = new FileInputStream( f );
byte[] fBytes = new byte[fIn.available()];
fIn.read( fBytes );
fIn.close();
return new String( fBytes );
}
private void recopyInputFiles()
throws IOException
{
FileUtils.copyDirectory( new File( baseDir, "src/test/resources/input-bak/" ),
new File( baseDir, "src/test/resources/input/src" ) );
FileUtils.copyDirectory( new File( baseDir, "src/test/resources/input-bak/" ),
new File( baseDir, "src/test/resources/input/test" ) );
List fileList = FileUtils.getFiles( new File( baseDir, "src/test/resources/input-bak/" ), "*.java", "" );
for ( int ctr = 0; ctr < fileList.size(); ctr++ )
{
break;
}
}
private void deleteInputFiles()
throws IOException
{
FileUtils.deleteDirectory( baseDir + "/src/test/resources/input" );
}
}