1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.puppycrawl.tools.checkstyle.grammar.javadoc;
21
22 import static com.google.common.truth.Truth.assertWithMessage;
23
24 import java.lang.reflect.Field;
25 import java.lang.reflect.Modifier;
26 import java.util.Arrays;
27 import java.util.List;
28 import java.util.Set;
29
30 import org.junit.jupiter.api.Test;
31
32
33
34
35
36
37
38
39 public class GeneratedJavadocCommentsTokenTypesTest {
40
41 private static final List<String> INTERNAL_TOKENS = List.of(
42 "WS",
43 "CODE",
44 "LINK",
45 "AUTHOR",
46 "DEPRECATED",
47 "RETURN",
48 "PARAM",
49 "VALUE",
50 "SUMMARY",
51 "SYSTEM_PROPERTY",
52 "INDEX",
53 "EXCEPTION",
54 "THROWS",
55 "SINCE",
56 "VERSION",
57 "SEE",
58 "LITERAL_HIDDEN",
59 "SERIAL",
60 "SERIAL_DATA",
61 "SERIAL_FIELD",
62 "USES",
63 "PROVIDES",
64 "LITERAL",
65 "CUSTOM_NAME",
66 "Snippet_ATTRIBUTE",
67 "See_TAG_OPEN",
68 "ATTRIBUTE",
69 "Link_COMMA"
70 );
71
72 private static final String MSG = "Ensure that token numbers generated for the elements"
73 + "present in JavadocParser are consistent with what the tests assert.";
74
75
76
77
78
79
80
81
82
83
84
85 @Test
86 public void testTokenNumbers() {
87 assertWithMessage(MSG)
88 .that(JavadocCommentsLexer.JAVADOC)
89 .isEqualTo(1);
90 assertWithMessage(MSG)
91 .that(JavadocCommentsLexer.LEADING_ASTERISK)
92 .isEqualTo(2);
93 assertWithMessage(MSG)
94 .that(JavadocCommentsLexer.NEWLINE)
95 .isEqualTo(3);
96 assertWithMessage(MSG)
97 .that(JavadocCommentsLexer.TEXT)
98 .isEqualTo(4);
99 assertWithMessage(MSG)
100 .that(JavadocCommentsLexer.JAVADOC_INLINE_TAG)
101 .isEqualTo(6);
102 assertWithMessage(MSG)
103 .that(JavadocCommentsLexer.JAVADOC_INLINE_TAG_START)
104 .isEqualTo(7);
105 assertWithMessage(MSG)
106 .that(JavadocCommentsLexer.JAVADOC_INLINE_TAG_END)
107 .isEqualTo(8);
108 assertWithMessage(MSG)
109 .that(JavadocCommentsLexer.IDENTIFIER)
110 .isEqualTo(11);
111 assertWithMessage(MSG)
112 .that(JavadocCommentsLexer.HASH)
113 .isEqualTo(12);
114 assertWithMessage(MSG)
115 .that(JavadocCommentsLexer.LPAREN)
116 .isEqualTo(13);
117 assertWithMessage(MSG)
118 .that(JavadocCommentsLexer.RPAREN)
119 .isEqualTo(14);
120 assertWithMessage(MSG)
121 .that(JavadocCommentsLexer.COMMA)
122 .isEqualTo(15);
123 assertWithMessage(MSG)
124 .that(JavadocCommentsLexer.TAG_OPEN)
125 .isEqualTo(21);
126 assertWithMessage(MSG)
127 .that(JavadocCommentsLexer.TAG_CLOSE)
128 .isEqualTo(22);
129 assertWithMessage(MSG)
130 .that(JavadocCommentsLexer.TAG_SLASH_CLOSE)
131 .isEqualTo(23);
132 assertWithMessage(MSG)
133 .that(JavadocCommentsLexer.TAG_SLASH)
134 .isEqualTo(24);
135 assertWithMessage(MSG)
136 .that(JavadocCommentsLexer.EQUALS)
137 .isEqualTo(25);
138 assertWithMessage(MSG)
139 .that(JavadocCommentsLexer.TAG_NAME)
140 .isEqualTo(26);
141 assertWithMessage(MSG)
142 .that(JavadocCommentsLexer.ATTRIBUTE_VALUE)
143 .isEqualTo(27);
144 assertWithMessage(MSG)
145 .that(JavadocCommentsLexer.SLASH)
146 .isEqualTo(28);
147 assertWithMessage(MSG)
148 .that(JavadocCommentsLexer.PARAMETER_TYPE)
149 .isEqualTo(29);
150 assertWithMessage(MSG)
151 .that(JavadocCommentsLexer.LT)
152 .isEqualTo(30);
153 assertWithMessage(MSG)
154 .that(JavadocCommentsLexer.GT)
155 .isEqualTo(31);
156 assertWithMessage(MSG)
157 .that(JavadocCommentsLexer.EXTENDS)
158 .isEqualTo(32);
159 assertWithMessage(MSG)
160 .that(JavadocCommentsLexer.SUPER)
161 .isEqualTo(33);
162 assertWithMessage(MSG)
163 .that(JavadocCommentsLexer.QUESTION)
164 .isEqualTo(34);
165 assertWithMessage(MSG)
166 .that(JavadocCommentsLexer.FORMAT_SPECIFIER)
167 .isEqualTo(36);
168 assertWithMessage(MSG)
169 .that(JavadocCommentsLexer.INHERIT_DOC)
170 .isEqualTo(37);
171 assertWithMessage(MSG)
172 .that(JavadocCommentsLexer.INDEX_TERM)
173 .isEqualTo(41);
174 assertWithMessage(MSG)
175 .that(JavadocCommentsLexer.SNIPPET)
176 .isEqualTo(42);
177 assertWithMessage(MSG)
178 .that(JavadocCommentsLexer.SNIPPET_ATTR_NAME)
179 .isEqualTo(43);
180 assertWithMessage(MSG)
181 .that(JavadocCommentsLexer.COLON)
182 .isEqualTo(44);
183 assertWithMessage(MSG)
184 .that(JavadocCommentsLexer.PARAMETER_NAME)
185 .isEqualTo(47);
186 assertWithMessage(MSG)
187 .that(JavadocCommentsLexer.STRING_LITERAL)
188 .isEqualTo(51);
189 assertWithMessage(MSG)
190 .that(JavadocCommentsLexer.FIELD_TYPE)
191 .isEqualTo(56);
192 assertWithMessage(MSG)
193 .that(JavadocCommentsLexer.AT_SIGN)
194 .isEqualTo(57);
195 assertWithMessage(MSG)
196 .that(JavadocCommentsLexer.TYPE_NAME)
197 .isEqualTo(58);
198 assertWithMessage(MSG)
199 .that(JavadocCommentsLexer.REFERENCE)
200 .isEqualTo(59);
201 assertWithMessage(MSG)
202 .that(JavadocCommentsLexer.MEMBER_REFERENCE)
203 .isEqualTo(60);
204 assertWithMessage(MSG)
205 .that(JavadocCommentsLexer.PARAMETER_TYPE_LIST)
206 .isEqualTo(61);
207 assertWithMessage(MSG)
208 .that(JavadocCommentsLexer.TYPE_ARGUMENTS)
209 .isEqualTo(62);
210 assertWithMessage(MSG)
211 .that(JavadocCommentsLexer.TYPE_ARGUMENT)
212 .isEqualTo(63);
213 assertWithMessage(MSG)
214 .that(JavadocCommentsLexer.DESCRIPTION)
215 .isEqualTo(64);
216 assertWithMessage(MSG)
217 .that(JavadocCommentsLexer.SNIPPET_ATTRIBUTES)
218 .isEqualTo(65);
219 assertWithMessage(MSG)
220 .that(JavadocCommentsLexer.SNIPPET_ATTRIBUTE)
221 .isEqualTo(66);
222 assertWithMessage(MSG)
223 .that(JavadocCommentsLexer.SNIPPET_BODY)
224 .isEqualTo(67);
225 assertWithMessage(MSG)
226 .that(JavadocCommentsLexer.HTML_ELEMENT)
227 .isEqualTo(68);
228 assertWithMessage(MSG)
229 .that(JavadocCommentsLexer.VOID_ELEMENT)
230 .isEqualTo(69);
231 assertWithMessage(MSG)
232 .that(JavadocCommentsLexer.HTML_CONTENT)
233 .isEqualTo(70);
234 assertWithMessage(MSG)
235 .that(JavadocCommentsLexer.HTML_TAG_START)
236 .isEqualTo(71);
237 assertWithMessage(MSG)
238 .that(JavadocCommentsLexer.HTML_TAG_END)
239 .isEqualTo(72);
240 assertWithMessage(MSG)
241 .that(JavadocCommentsLexer.HTML_ATTRIBUTES)
242 .isEqualTo(73);
243 assertWithMessage(MSG)
244 .that(JavadocCommentsLexer.HTML_ATTRIBUTE)
245 .isEqualTo(74);
246 assertWithMessage(MSG)
247 .that(JavadocCommentsLexer.JAVADOC_BLOCK_TAG)
248 .isEqualTo(75);
249 assertWithMessage(MSG)
250 .that(JavadocCommentsLexer.CODE_INLINE_TAG)
251 .isEqualTo(76);
252 assertWithMessage(MSG)
253 .that(JavadocCommentsLexer.LINK_INLINE_TAG)
254 .isEqualTo(77);
255 assertWithMessage(MSG)
256 .that(JavadocCommentsLexer.LINKPLAIN_INLINE_TAG)
257 .isEqualTo(78);
258 assertWithMessage(MSG)
259 .that(JavadocCommentsLexer.VALUE_INLINE_TAG)
260 .isEqualTo(79);
261 assertWithMessage(MSG)
262 .that(JavadocCommentsLexer.INHERIT_DOC_INLINE_TAG)
263 .isEqualTo(80);
264 assertWithMessage(MSG)
265 .that(JavadocCommentsLexer.SUMMARY_INLINE_TAG)
266 .isEqualTo(81);
267 assertWithMessage(MSG)
268 .that(JavadocCommentsLexer.SYSTEM_PROPERTY_INLINE_TAG)
269 .isEqualTo(82);
270 assertWithMessage(MSG)
271 .that(JavadocCommentsLexer.INDEX_INLINE_TAG)
272 .isEqualTo(83);
273 assertWithMessage(MSG)
274 .that(JavadocCommentsLexer.RETURN_INLINE_TAG)
275 .isEqualTo(84);
276 assertWithMessage(MSG)
277 .that(JavadocCommentsLexer.LITERAL_INLINE_TAG)
278 .isEqualTo(85);
279 assertWithMessage(MSG)
280 .that(JavadocCommentsLexer.SNIPPET_INLINE_TAG)
281 .isEqualTo(86);
282 assertWithMessage(MSG)
283 .that(JavadocCommentsLexer.CUSTOM_INLINE_TAG)
284 .isEqualTo(87);
285 assertWithMessage(MSG)
286 .that(JavadocCommentsLexer.AUTHOR_BLOCK_TAG)
287 .isEqualTo(88);
288 assertWithMessage(MSG)
289 .that(JavadocCommentsLexer.DEPRECATED_BLOCK_TAG)
290 .isEqualTo(89);
291 assertWithMessage(MSG)
292 .that(JavadocCommentsLexer.RETURN_BLOCK_TAG)
293 .isEqualTo(90);
294 assertWithMessage(MSG)
295 .that(JavadocCommentsLexer.PARAM_BLOCK_TAG)
296 .isEqualTo(91);
297 assertWithMessage(MSG)
298 .that(JavadocCommentsLexer.EXCEPTION_BLOCK_TAG)
299 .isEqualTo(92);
300 assertWithMessage(MSG)
301 .that(JavadocCommentsLexer.THROWS_BLOCK_TAG)
302 .isEqualTo(93);
303 assertWithMessage(MSG)
304 .that(JavadocCommentsLexer.SINCE_BLOCK_TAG)
305 .isEqualTo(94);
306 assertWithMessage(MSG)
307 .that(JavadocCommentsLexer.VERSION_BLOCK_TAG)
308 .isEqualTo(95);
309 assertWithMessage(MSG)
310 .that(JavadocCommentsLexer.SEE_BLOCK_TAG)
311 .isEqualTo(96);
312 assertWithMessage(MSG)
313 .that(JavadocCommentsLexer.HIDDEN_BLOCK_TAG)
314 .isEqualTo(97);
315 assertWithMessage(MSG)
316 .that(JavadocCommentsLexer.USES_BLOCK_TAG)
317 .isEqualTo(98);
318 assertWithMessage(MSG)
319 .that(JavadocCommentsLexer.PROVIDES_BLOCK_TAG)
320 .isEqualTo(99);
321 assertWithMessage(MSG)
322 .that(JavadocCommentsLexer.SERIAL_BLOCK_TAG)
323 .isEqualTo(100);
324 assertWithMessage(MSG)
325 .that(JavadocCommentsLexer.SERIAL_DATA_BLOCK_TAG)
326 .isEqualTo(101);
327 assertWithMessage(MSG)
328 .that(JavadocCommentsLexer.SERIAL_FIELD_BLOCK_TAG)
329 .isEqualTo(102);
330 assertWithMessage(MSG)
331 .that(JavadocCommentsLexer.CUSTOM_BLOCK_TAG)
332 .isEqualTo(103);
333 assertWithMessage(MSG)
334 .that(JavadocCommentsLexer.HTML_COMMENT_START)
335 .isEqualTo(104);
336 assertWithMessage(MSG)
337 .that(JavadocCommentsLexer.HTML_COMMENT_END)
338 .isEqualTo(105);
339 assertWithMessage(MSG)
340 .that(JavadocCommentsLexer.HTML_COMMENT)
341 .isEqualTo(106);
342 assertWithMessage(MSG)
343 .that(JavadocCommentsLexer.HTML_COMMENT_CONTENT)
344 .isEqualTo(107);
345 assertWithMessage(MSG)
346 .that(JavadocCommentsLexer.TAG_ATTR_NAME)
347 .isEqualTo(114);
348
349 final Set<String> modeNames = Set.of(JavadocCommentsLexer.modeNames);
350 final Set<String> channelNames = Set.of(JavadocCommentsLexer.channelNames);
351
352 final int tokenCount = (int) Arrays.stream(JavadocCommentsLexer.class.getDeclaredFields())
353 .filter(GeneratedJavadocCommentsTokenTypesTest::isPublicStaticFinalInt)
354 .filter(field -> !modeNames.contains(field.getName()))
355 .filter(field -> !channelNames.contains(field.getName()))
356 .filter(field -> !INTERNAL_TOKENS.contains(field.getName()))
357 .count();
358
359
360 assertWithMessage("all tokens must be added to list in"
361 + " 'GeneratedJavadocTokenTypesTest' and verified"
362 + " that their old numbering didn't change")
363 .that(tokenCount)
364 .isEqualTo(88);
365 }
366
367
368
369
370
371
372
373 private static boolean isPublicStaticFinalInt(Field field) {
374 final Class<?> fieldType = field.getType();
375 final int mods = field.getModifiers();
376 return fieldType.equals(Integer.TYPE)
377 && Modifier.isPublic(mods)
378 && Modifier.isStatic(mods)
379 && Modifier.isFinal(mods);
380 }
381
382 }