blob: 049d57a0666cf431de03cc3a1985bb856ccf4c51 [file] [log] [blame]
package org.apache.maven.plugins.javadoc;
/*
* 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 com.thoughtworks.qdox.JavaProjectBuilder;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaSource;
import junit.framework.TestCase;
public class AbstractFixJavadocMojoTest
extends TestCase
{
private JavaSource getJavaSource( String source )
{
return new JavaProjectBuilder().addSource( new StringReader( source ) );
}
public void testReplaceLinkTags_noLinkTag()
throws Throwable
{
String comment = "/** @see ConnectException */";
String source = "import java.net.ConnectException;\n"
+ comment + "\n"
+ "public class NoLinkTag {}";
JavaClass clazz = getJavaSource( source ).getClassByName( "NoLinkTag" );
String newComment = AbstractFixJavadocMojo.replaceLinkTags( comment, clazz );
assertEquals( "/** @see ConnectException */", newComment );
}
public void testReplaceLinkTags_oneLinkTag()
throws Throwable
{
String comment = "/** {@link ConnectException} */";
String source = "import java.net.ConnectException;\n"
+ comment + "\n"
+ "public class OneLinkTag {}";
JavaClass clazz = getJavaSource( source ).getClassByName( "OneLinkTag" );
String newComment = AbstractFixJavadocMojo.replaceLinkTags( comment, clazz );
assertEquals( "/** {@link java.net.ConnectException} */", newComment );
}
public void testReplaceLinkTags_missingEndBrace()
throws Throwable
{
String comment = "/** {@link ConnectException */";
String source = "import java.net.ConnectException;\n"
+ comment + "\n"
+ "public class MissingEndBrace {}";
JavaClass clazz = getJavaSource( source ).getClassByName( "MissingEndBrace" );
String newComment = AbstractFixJavadocMojo.replaceLinkTags( comment, clazz );
assertEquals( "/** {@link ConnectException */", newComment );
}
public void testReplaceLinkTags_spacesAfterLinkTag()
throws Throwable
{
String comment = "/** {@link ConnectException} */";
String source = "import java.net.ConnectException;\n"
+ comment + "\n"
+ "public class SpacesAfterLinkTag {}";
JavaClass clazz = getJavaSource( source ).getClassByName( "SpacesAfterLinkTag" );
String newComment = AbstractFixJavadocMojo.replaceLinkTags( comment, clazz );
assertEquals( "/** {@link java.net.ConnectException} */", newComment );
}
public void testReplaceLinkTags_spacesAfterClassName()
throws Throwable
{
String comment = "/** {@link ConnectException } */";
String source = "import java.net.ConnectException;\n"
+ comment + "\n"
+ "public class SpacesAfterClassName {}";
JavaClass clazz = getJavaSource( source ).getClassByName( "SpacesAfterClassName" );
String newComment = AbstractFixJavadocMojo.replaceLinkTags( comment, clazz );
assertEquals( "/** {@link java.net.ConnectException} */", newComment );
}
public void testReplaceLinkTags_spacesAfterMethod()
throws Throwable
{
String comment = "/** {@link ConnectException#getMessage() } */";
String source = "import java.net.ConnectException;\n"
+ comment + "\n"
+ "public class SpacesAfterMethod {}";
JavaClass clazz = getJavaSource( source ).getClassByName( "SpacesAfterMethod" );
String newComment = AbstractFixJavadocMojo.replaceLinkTags( comment, clazz );
assertEquals( "/** {@link java.net.ConnectException#getMessage()} */", newComment );
}
public void testReplaceLinkTags_containingHash()
throws Throwable
{
String comment = "/** {@link ConnectException#getMessage()} */";
String source = "import java.net.ConnectException;\n"
+ comment + "\n"
+ "public class ContainingHashes {}";
JavaClass clazz = getJavaSource( source ).getClassByName( "ContainingHashes" );
String newComment = AbstractFixJavadocMojo.replaceLinkTags( comment, clazz );
assertEquals( "/** {@link java.net.ConnectException#getMessage()} */", newComment );
}
public void testReplaceLinkTags_followedByHash()
throws Throwable
{
String comment = "/** {@link ConnectException} ##important## */";
String source = "import java.net.ConnectException;\n"
+ comment + "\n"
+ "public class FollowedByHash {}";
JavaClass clazz = getJavaSource( source ).getClassByName( "FollowedByHash" );
String newComment = AbstractFixJavadocMojo.replaceLinkTags( comment, clazz );
assertEquals( "/** {@link java.net.ConnectException} ##important## */", newComment );
}
public void testReplaceLinkTags_twoLinks()
throws Throwable
{
String comment = "/** Use {@link ConnectException} instead of {@link Exception} */";
String source = "import java.net.ConnectException;\n"
+ comment + "\n"
+ "public class TwoLinks {}";
JavaClass clazz = getJavaSource( source ).getClassByName( "TwoLinks" );
String newComment = AbstractFixJavadocMojo.replaceLinkTags( comment, clazz );
assertEquals( "/** Use {@link java.net.ConnectException} instead of {@link java.lang.Exception} */", newComment );
}
public void testReplaceLinkTags_OnlyAnchor()
throws Throwable
{
String comment = "/** There's a {@link #getClass()} but no setClass() */";
String source = "import java.net.ConnectException;\n"
+ comment + "\n"
+ "public class OnlyAnchor {}";
JavaClass clazz = getJavaSource( source ).getClassByName( "OnlyAnchor" );
String newComment = AbstractFixJavadocMojo.replaceLinkTags( comment, clazz );
assertEquals( "/** There's a {@link #getClass()} but no setClass() */", newComment );
}
}