1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.javadoc;
20
21 import java.io.StringReader;
22
23 import com.thoughtworks.qdox.JavaProjectBuilder;
24 import com.thoughtworks.qdox.model.JavaClass;
25 import com.thoughtworks.qdox.model.JavaSource;
26 import org.junit.Test;
27
28 import static org.assertj.core.api.Assertions.assertThat;
29
30 public class AbstractFixJavadocMojoTest {
31 private JavaSource getJavaSource(String source) {
32 return new JavaProjectBuilder().addSource(new StringReader(source));
33 }
34
35 @Test
36 public void testReplaceLinkTags_noLinkTag() {
37 String comment = "/** @see ConnectException */";
38 String source = "import java.net.ConnectException;\n" + comment + "\n" + "public class NoLinkTag {}";
39
40 JavaClass clazz = getJavaSource(source).getClassByName("NoLinkTag");
41
42 String newComment = AbstractFixJavadocMojo.replaceLinkTags(comment, clazz);
43
44 assertThat(newComment).isEqualTo("/** @see ConnectException */");
45 }
46
47 @Test
48 public void testReplaceLinkTags_oneLinkTag() {
49 String comment = "/** {@link ConnectException} */";
50 String source = "import java.net.ConnectException;\n" + comment + "\n" + "public class OneLinkTag {}";
51
52 JavaClass clazz = getJavaSource(source).getClassByName("OneLinkTag");
53
54 String newComment = AbstractFixJavadocMojo.replaceLinkTags(comment, clazz);
55 assertThat(newComment).isEqualTo("/** {@link java.net.ConnectException} */");
56 }
57
58 @Test
59 public void testReplaceLinkTags_missingEndBrace() {
60 String comment = "/** {@link ConnectException */";
61 String source = "import java.net.ConnectException;\n" + comment + "\n" + "public class MissingEndBrace {}";
62
63 JavaClass clazz = getJavaSource(source).getClassByName("MissingEndBrace");
64
65 String newComment = AbstractFixJavadocMojo.replaceLinkTags(comment, clazz);
66 assertThat(newComment).isEqualTo("/** {@link ConnectException */");
67 }
68
69 @Test
70 public void testReplaceLinkTags_spacesAfterLinkTag() {
71 String comment = "/** {@link ConnectException} */";
72 String source = "import java.net.ConnectException;\n" + comment + "\n" + "public class SpacesAfterLinkTag {}";
73
74 JavaClass clazz = getJavaSource(source).getClassByName("SpacesAfterLinkTag");
75
76 String newComment = AbstractFixJavadocMojo.replaceLinkTags(comment, clazz);
77 assertThat(newComment).isEqualTo("/** {@link java.net.ConnectException} */");
78 }
79
80 @Test
81 public void testReplaceLinkTags_spacesAfterClassName() {
82 String comment = "/** {@link ConnectException } */";
83 String source = "import java.net.ConnectException;\n" + comment + "\n" + "public class SpacesAfterClassName {}";
84
85 JavaClass clazz = getJavaSource(source).getClassByName("SpacesAfterClassName");
86
87 String newComment = AbstractFixJavadocMojo.replaceLinkTags(comment, clazz);
88 assertThat(newComment).isEqualTo("/** {@link java.net.ConnectException} */");
89 }
90
91 @Test
92 public void testReplaceLinkTags_spacesAfterMethod() {
93 String comment = "/** {@link ConnectException#getMessage() } */";
94 String source = "import java.net.ConnectException;\n" + comment + "\n" + "public class SpacesAfterMethod {}";
95
96 JavaClass clazz = getJavaSource(source).getClassByName("SpacesAfterMethod");
97
98 String newComment = AbstractFixJavadocMojo.replaceLinkTags(comment, clazz);
99 assertThat(newComment).isEqualTo("/** {@link java.net.ConnectException#getMessage()} */");
100 }
101
102 @Test
103 public void testReplaceLinkTags_containingHash() {
104 String comment = "/** {@link ConnectException#getMessage()} */";
105 String source = "import java.net.ConnectException;\n" + comment + "\n" + "public class ContainingHashes {}";
106
107 JavaClass clazz = getJavaSource(source).getClassByName("ContainingHashes");
108
109 String newComment = AbstractFixJavadocMojo.replaceLinkTags(comment, clazz);
110 assertThat(newComment).isEqualTo("/** {@link java.net.ConnectException#getMessage()} */");
111 }
112
113 @Test
114 public void testReplaceLinkTags_followedByHash() {
115 String comment = "/** {@link ConnectException} ##important## */";
116 String source = "import java.net.ConnectException;\n" + comment + "\n" + "public class FollowedByHash {}";
117
118 JavaClass clazz = getJavaSource(source).getClassByName("FollowedByHash");
119
120 String newComment = AbstractFixJavadocMojo.replaceLinkTags(comment, clazz);
121 assertThat(newComment).isEqualTo("/** {@link java.net.ConnectException} ##important## */");
122 }
123
124 @Test
125 public void testReplaceLinkTags_twoLinks() {
126 String comment = "/** Use {@link ConnectException} instead of {@link Exception} */";
127 String source = "import java.net.ConnectException;\n" + comment + "\n" + "public class TwoLinks {}";
128
129 JavaClass clazz = getJavaSource(source).getClassByName("TwoLinks");
130
131 String newComment = AbstractFixJavadocMojo.replaceLinkTags(comment, clazz);
132 assertThat(newComment)
133 .isEqualTo("/** Use {@link java.net.ConnectException} instead of {@link java.lang.Exception} */");
134 }
135
136 @Test
137 public void testReplaceLinkTags_OnlyAnchor() {
138 String comment = "/** There's a {@link #getClass()} but no setClass() */";
139 String source = "import java.net.ConnectException;\n" + comment + "\n" + "public class OnlyAnchor {}";
140
141 JavaClass clazz = getJavaSource(source).getClassByName("OnlyAnchor");
142
143 String newComment = AbstractFixJavadocMojo.replaceLinkTags(comment, clazz);
144 assertThat(newComment).isEqualTo("/** There's a {@link #getClass()} but no setClass() */");
145 }
146 }