/* * #%L * License Maven Plugin * * $Id$ * $HeadURL$ * %% * Copyright (C) 2008 - 2011 CodeLutin, Codehaus, Tony Chemit * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Lesser Public License for more details. * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see * <http://www.gnu.org/licenses/lgpl-3.0.html>. * #L% */ package org.codehaus.mojo.license.header.transformer; import org.codehaus.mojo.license.header.FileHeader; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import java.util.regex.Matcher; import static org.codehaus.mojo.license.header.transformer.AbstractFileHeaderTransformer.COPYRIGHT_PATTERN; import static org.codehaus.mojo.license.header.transformer.FileHeaderTransformer.DEFAULT_PROCESS_END_TAG; import static org.codehaus.mojo.license.header.transformer.FileHeaderTransformer.DEFAULT_PROCESS_START_TAG; import static org.codehaus.mojo.license.header.transformer.FileHeaderTransformer.DEFAULT_SECTION_DELIMITER; import static org.codehaus.mojo.license.header.transformer.FileHeaderTransformer.LINE_SEPARATOR; import static org.codehaus.mojo.license.header.transformer.JavaFileHeaderTransformer.*; /** * Tests the {@link AbstractFileHeaderTransformer}. * * @author tchemit <chemit@codelutin.com> * @since 1.0 */ public class AbstractFileHeaderTransformerTest { FileHeaderTransformer transformer; FileHeader model1, model2; @Before public void setUp() throws Exception { transformer = new JavaFileHeaderTransformer(); model1 = new FileHeader(); model1.setDescription( "Description" ); model1.setCopyrightFirstYear( 2010 ); model1.setCopyrightLastYear( null ); model1.setCopyrightHolder( "Tony" ); model1.setLicense( "License" ); model2 = new FileHeader(); model2.setDescription( "Description2" ); model2.setCopyrightFirstYear( 2010 ); model2.setCopyrightLastYear( 2012 ); model2.setCopyrightHolder( "Tony2" ); model2.setLicense( "License2" ); } @After public void tearDown() throws Exception { transformer = null; model1 = null; model2 = null; } @Test( expected = IllegalStateException.class ) public void testIllegalTransformer() throws Exception { new AbstractFileHeaderTransformer( "name", "description", "commentPrefix", "commentEndtag", "commentPrefix" ) { public String[] getDefaultAcceptedExtensions() { return new String[]{ getName() }; } }; } @Test( expected = IllegalStateException.class ) public void testIllegalTransformer2() throws Exception { new AbstractFileHeaderTransformer( "name", "description", "commentstartTag", "commentPrefix", "commentPrefix" ) { public String[] getDefaultAcceptedExtensions() { return new String[]{ getName() }; } }; } @Test public void testCopyrightPattern() throws Exception { String actual; Matcher matcher; String prefix; String firstYear; String lastYear; String holder; actual = "Copyright (C) 2010 Tony"; matcher = COPYRIGHT_PATTERN.matcher( actual ); Assert.assertTrue( matcher.matches() ); Assert.assertEquals( 5, matcher.groupCount() ); prefix = matcher.group( 1 ); Assert.assertEquals( "Copyright (C)", prefix ); firstYear = matcher.group( 2 ); Assert.assertEquals( "2010", firstYear ); lastYear = matcher.group( 4 ); Assert.assertEquals( null, lastYear ); holder = matcher.group( 5 ); Assert.assertEquals( "Tony", holder ); actual = "Copyright (C) 2010 - 2012 Tony"; matcher = COPYRIGHT_PATTERN.matcher( actual ); Assert.assertTrue( matcher.matches() ); Assert.assertEquals( 5, matcher.groupCount() ); prefix = matcher.group( 1 ); Assert.assertEquals( "Copyright (C)", prefix ); firstYear = matcher.group( 2 ); Assert.assertEquals( "2010", firstYear ); lastYear = matcher.group( 4 ); Assert.assertEquals( "2012", lastYear ); holder = matcher.group( 5 ); Assert.assertEquals( "Tony", holder ); } @Test public void testToFileHeader() throws Exception { String header; FileHeader model; header = "Description" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "Copyright (C) 2010 Tony" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "License"; model = transformer.toFileHeader( header ); Assert.assertNotNull( model ); assertEquals( model1, model ); header = "Description2" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "Copyright (C) 2010 - 2012 Tony2" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "License2"; model = transformer.toFileHeader( header ); Assert.assertNotNull( model ); assertEquals( model2, model ); } @Test public void testToString() throws Exception { String header; header = transformer.toString( model1 ); Assert.assertEquals( "Description" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "Copyright (C) 2010 Tony" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "License" + LINE_SEPARATOR, header ); header = transformer.toString( model2 ); Assert.assertEquals( "Description2" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "Copyright (C) 2010 - 2012 Tony2" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "License2" + LINE_SEPARATOR, header ); } @Test public void testBoxProcessTag() throws Exception { String header; String boxedHeader; header = transformer.toString( model1 ); boxedHeader = transformer.boxProcessTag( header ); Assert.assertEquals( DEFAULT_PROCESS_START_TAG + LINE_SEPARATOR + "Description" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "Copyright (C) 2010 Tony" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "License" + LINE_SEPARATOR + DEFAULT_PROCESS_END_TAG + LINE_SEPARATOR, boxedHeader ); header = transformer.toString( model2 ); boxedHeader = transformer.boxProcessTag( header ); Assert.assertEquals( DEFAULT_PROCESS_START_TAG + LINE_SEPARATOR + "Description2" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "Copyright (C) 2010 - 2012 Tony2" + LINE_SEPARATOR + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + "License2" + LINE_SEPARATOR + DEFAULT_PROCESS_END_TAG + LINE_SEPARATOR, boxedHeader ); } @Test public void testUnboxProcessTag() throws Exception { String header; String boxedHeader; String unboxedHeader; header = transformer.toString( model1 ); boxedHeader = transformer.boxProcessTag( header ); unboxedHeader = transformer.unboxProcessTag( boxedHeader ); Assert.assertEquals( header, unboxedHeader ); header = transformer.toString( model2 ); boxedHeader = transformer.boxProcessTag( header ); unboxedHeader = transformer.unboxProcessTag( boxedHeader ); Assert.assertEquals( header, unboxedHeader ); } @Test public void testBoxComment() throws Exception { String header; String boxedHeader; header = transformer.toString( model1 ); boxedHeader = transformer.boxComment( header, true ); Assert.assertEquals( COMMENT_START_TAG + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "Description" + LINE_SEPARATOR + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "Copyright (C) 2010 Tony" + LINE_SEPARATOR + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "License" + LINE_SEPARATOR + COMMENT_END_TAG + LINE_SEPARATOR, boxedHeader ); boxedHeader = transformer.boxComment( header, false ); Assert.assertEquals( COMMENT_LINE_PREFIX + "Description" + LINE_SEPARATOR + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "Copyright (C) 2010 Tony" + LINE_SEPARATOR + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "License" + LINE_SEPARATOR, boxedHeader ); header = transformer.toString( model2 ); boxedHeader = transformer.boxComment( header, true ); Assert.assertEquals( COMMENT_START_TAG + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "Description2" + LINE_SEPARATOR + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "Copyright (C) 2010 - 2012 Tony2" + LINE_SEPARATOR + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "License2" + LINE_SEPARATOR + COMMENT_END_TAG + LINE_SEPARATOR, boxedHeader ); boxedHeader = transformer.boxComment( header, false ); Assert.assertEquals( COMMENT_LINE_PREFIX + "Description2" + LINE_SEPARATOR + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "Copyright (C) 2010 - 2012 Tony2" + LINE_SEPARATOR + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "License2" + LINE_SEPARATOR, boxedHeader ); } @Test public void testUnboxComment() throws Exception { String header; String boxedHeader; String unboxedHeader; header = transformer.toString( model1 ); boxedHeader = transformer.boxComment( header, true ); unboxedHeader = transformer.unboxComent( boxedHeader ); Assert.assertEquals( header, unboxedHeader ); header = transformer.toString( model2 ); boxedHeader = transformer.boxComment( header, true ); unboxedHeader = transformer.unboxComent( boxedHeader ); Assert.assertEquals( header, unboxedHeader ); } public static void assertEquals( FileHeader model, FileHeader model2 ) { Assert.assertEquals( model.getDescription(), model2.getDescription() ); Assert.assertEquals( model.getCopyrightFirstYear(), model2.getCopyrightFirstYear() ); Assert.assertEquals( model.getCopyrightLastYear(), model2.getCopyrightLastYear() ); Assert.assertEquals( model.getCopyrightHolder(), model2.getCopyrightHolder() ); Assert.assertEquals( model.getLicense(), model2.getLicense() ); } }