aboutsummaryrefslogtreecommitdiff
path: root/javaparser-testing/src/test/resources/com/github/javaparser/bdd/comment_attribution_scenarios.story
blob: e509fc998d179e4ae011360227c91a68eb7b473b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
Scenario: A Class With Line Comments is processed by the Java Parser

Given the class:
package japa.parser.comments;

public class ClassWithLineComments {

    public void aMethod(){
        // first comment
        int a=0; // second comment
        // third comment
        // fourth comment
    }
}
When the class is parsed by the Java parser
Then the compilation unit is not commented
Then the compilation unit has 0 orphan comments
Then class 1 has 4 total contained comments
Then method 1 in class 1 has 4 total contained comments
Then method 1 in class 1 has 0 orphan comments
Then block statement in method 1 in class 1 has 4 total contained comments
Then block statement in method 1 in class 1 has 3 orphan comments



Scenario: A Class With Line Comments is processed by the Java Parser

Given the class:
package japa.parser.comments;

/**Javadoc associated with the class*/
public class ClassWithOrphanComments {
    //a first comment floating in the class

    //comment associated to the method
    void foo(){
        /*comment floating inside the method*/
    }

    //a second comment floating in the class
}

//Orphan comment inside the CompilationUnit
When the class is parsed by the Java parser
Then the compilation unit is not commented
Then the compilation unit has 6 contained comments
Then the compilation unit orphan comment 1 is "Orphan comment inside the CompilationUnit"
Then class 1 orphan comment 1 is "a first comment floating in the class"
Then class 1 orphan comment 2 is "a second comment floating in the class"
Then class 1 is commented "Javadoc associated with the class"
Then class 1 has 4 total contained comments
Then method 1 in class 1 has 0 orphan comments
Then method 1 in class 1 is commented "comment associated to the method"
Then comment 1 in method 1 in class 1 is "comment floating inside the method"
Then block statement in method 1 in class 1 orphan comment 1 is "comment floating inside the method"


Scenario: A Class With Orphan Comment in Class Declaration is parsed by the Java Parser

Given the class:
class /*Comment1*/ A {
    //comment2
    // comment3
    int a;
    /**comment4
    *
    * */
    //comment5
}
When the class is parsed by the Java parser
Then class 1 is not commented
Then class 1 orphan comment 1 is "Comment2"


Scenario: A Class With Line Comments in Multiple Methods is parsed by the Java Parser

Given the class:
package japa.parser.comments;

public class ClassWithLineCommentsInMultipleMethods {

    public void aMethod() {
        // first comment
        int a = 0; //second comment
        // third comment
        // fourth comment
    }

    public void anotherMethod() {
        // a unique comment
        // first comment
        int a = 0; //second comment
        // third comment
        // fourth comment
    }
}
When the class is parsed by the Java parser
Then the compilation unit has 9 contained comments
Then the compilation unit has 0 orphan comments
Then class 1 is not commented
Then class 1 has 9 total contained comments
Then method 1 in class 1 has 4 total contained comments
Then method 1 in class 1 has 0 orphan comments
Then block statement in method 1 in class 1 has 4 total contained comments
Then block statement in method 1 in class 1 has 3 orphan comments
Then method 2 in class 1 has 5 total contained comments
Then method 2 in class 1 has 0 orphan comments
Then block statement in method 2 in class 1 has 5 total contained comments
Then block statement in method 2 in class 1 has 4 orphan comments



Scenario: A Class With Line Comments in Multiple Methods is parsed by the Java Parser

Given the class:
package japa.parser.comments;

public class ClassWithLineCommentInsideBlockComment {

    /* comment to a method */
    void foo(){}

    /*// Line Comment put immediately after block comment

    //// Comment debauchery

    another orphan.
    It spans over more lines */
}
When the class is parsed by the Java parser
Then method 1 in class 1 is commented " comment to a method "
Then class 1 orphan comment 1 is "// Line Comment put immediately after block comment

                                  //// Comment debauchery

                                  another orphan.
                                  It spans over more lines "



Scenario: A Class With Line Comments on Fields is parsed by the Java Parser

Given the class:
package japa.parser.comments;

public class Issue43 {
    //Case 1
    private String field1 = null; //field1

    //Case 2
    private String field2
            = null; //field2

}
When the class is parsed by the Java parser
Then the compilation unit has 4 contained comments
Then class 1 has 4 total contained comments
Then class 1 has 1 orphan comment
Then class 1 orphan comment 1 is "Case 1"
Then field 1 in class 1 contains 0 comments
!--Then field 2 in class 1 contains 0 comments
Then field 1 in class 1 is commented "field1"
Then field 2 in class 1 is commented "Case 2"
Then variable 1 value of field 2 in class 1 is commented "field2"


Scenario: Another Class With Line Comments on Fields is parsed by the Java Parser

Given the class:
package japa.parser.comments;

public class Issue43variant {
    private String field1 = null; //field1

    private String field2
            = null; //field2

}
When the class is parsed by the Java parser
Then the compilation unit has 2 contained comments
Then class 1 has 2 total contained comments
Then field 1 in class 1 contains 0 comments
!--Then field 2 in class 1 contains 0 comments
Then field 1 in class 1 is commented "field1"
Then variable 1 value of field 2 in class 1 is commented "field2"


Scenario: A Class With Mixed Comments on Fields is parsed by the Java Parser

Given the class:
package japa.parser.javacc;
public class Teste {
    //line comment1
    int a = 0; //line comment2
    int b = 0; //line comment3
    int c = 0; /* multi-line
                * comment
                */
    int d = 0; /** multi-line
                * javadoc */
    int e = 0;
}
//final comment
When the class is parsed by the Java parser
Then the compilation unit has 6 contained comments
Then class 1 has 5 total contained comments
Then class 1 orphan comment 1 is "line comment1"
Then field 1 in class 1 is commented "line comment2"
Then field 2 in class 1 is commented "line comment3"
Then field 3 in class 1 is not commented



Scenario: Comment with a preceding line space is an orphan

Given the class:
//comment

class A {}
When the class is parsed by the Java parser
Then the compilation unit orphan comment 1 is "comment"


Scenario: Comment without a preceding line space is associated to class

Given the class:
//comment
class A {}
When the class is parsed by the Java parser
Then class 1 is commented "comment"


Scenario: Comments after Javadoc are attributed to the method if flag is active

Given the class:
class Issue40{
    @GET
    @Path("original")
    /**
    * Return the original user.
    */
    public User getOriginalUser(String userName) {
        return userService.getOriginalUser(userName);
    }
}
When the do not consider annotations as node start for code attribution is true on the Java parser
When the class is parsed by the Java parser
Then the compilation unit has 1 contained comments
Then comment 1 in compilation unit is not an orphan
Then method 1 in class 1 is commented "* Return the original user."



Scenario: Comments after Javadoc are attributed to the method if flag is not active

Given the class:
class Issue40{
    @GET
    @Path("original")
    /**
    * Return the original user.
    */
    public User getOriginalUser(String userName) {
        return userService.getOriginalUser(userName);
    }
}
When the do not consider annotations as node start for code attribution is false on the Java parser
When the class is parsed by the Java parser
Then the compilation unit has 1 contained comments
Then comment 1 in compilation unit is not an orphan
Then type of method 1 in class 1 is commented "* Return the original user."


Scenario: A Class With Line Comments is processed by the Java Parser

Given the class:
/*CompilationUnitComment*/
package japa.parser.comments;

public class ClassWithMixedStyleComments {
    // line comment
    int a = 0;
    // another line comment
    int b = 0;
    // line comment
    int c = 0;
    /* multi-line
       comment
    */
    int d = 0;
    /**
     * multi-line
     */
    int e = 0;
    // final comment
}
When the class is parsed by the Java parser
Then the compilation is commented "CompilationUnitComment"
Then class 1 is not commented
Then class 1 has 6 total contained comments
Then class 1 orphan comment 1 is " final comment"
Then field 1 in class 1 is commented " line comment"
Then field 1 in class 1 contains 0 comments
Then field 2 in class 1 is commented " another line comment"
Then field 2 in class 1 contains 0 comments
Then field 3 in class 1 is commented " line comment"
Then field 3 in class 1 contains 0 comments
Then field 4 in class 1 is commented " multi-line comment"
Then field 4 in class 1 contains 0 comments
Then field 5 in class 1 is commented " * multi-line"
Then field 5 in class 1 contains 0 comments


Scenario: A class with only an orphan comment is processed by the Java Parser

Given the class:
class A {
    // orphan comment"
}
When the class is parsed by the Java parser
Then the compilation unit has 1 contained comments
Then comment 1 in compilation unit is an orphan
Then comment 1 in compilation unit parent is ClassOrInterfaceDeclaration



Scenario: A class with only a class comment is processed by the Java Parser

Given the class:
/* Comment of the class */
class A {
}
When the class is parsed by the Java parser
Then the compilation unit has 1 contained comments
Then comment 1 in compilation unit is not an orphan
Then comment 1 in compilation unit commented node is ClassOrInterfaceDeclaration



Scenario: A Class With two comments at class level is processed by the Java Parser

Given the class:
/* Orphan comment */
/* Comment of the class */
class A {
}
When the class is parsed by the Java parser
Then the compilation unit has 2 contained comments
Then comment 1 in compilation unit is an orphan
Then the compilation unit orphan comment 1 is "Orphan comment"
Then comment 2 in compilation unit is not an orphan
Then comment 2 in compilation unit commented node is ClassOrInterfaceDeclaration


Scenario: A Class has a comment associated to a field when processed by the Java Parser

Given the class:
class A {
    int a = 0; // comment associated to the field
}
When the class is parsed by the Java parser
Then the compilation unit has 1 contained comments
Then comment 1 in compilation unit is not an orphan
Then comment 1 in compilation unit commented node is FieldDeclaration


Scenario: A Class has a comment associated to a the literal when processed by the Java Parser

Given the class:
class A {
    int a
        = 0; // comment associated to the field
}
When the class is parsed by the Java parser
Then the compilation unit has 1 contained comments
Then comment 1 in compilation unit is not an orphan
Then comment 1 in compilation unit commented node is IntegerLiteralExpr



Scenario: A Class with two line comment within a method when processed by the Java Parser

Given the class:
class A {
    void foo() {
        // a comment
        int b; // another comment
    }
}
When the class is parsed by the Java parser
Then the compilation unit has 2 contained comments
Then comment 1 in compilation unit is an orphan
Then comment 1 in compilation unit is "a comment"
Then comment 2 in compilation unit is not an orphan
Then comment 2 in compilation unit is "another comment"
Then comment 2 in compilation unit commented node is ExpressionStmt


Scenario: A Class with an inline comment inside a block comment is parsed by the Java Parser

Given the class:
class A {
    /* A block comment that
    // Contains a line comment
    */
    public static void main(String args[]) {
    }
}
When the class is parsed by the Java parser
Then the compilation unit has 1 contained comments
Then comment 1 in compilation unit is "A block comment that // Contains a line comment"


Scenario: A Class with an inline comment inbetween annotation a method declaration is parsed Java Parser

Given the class:
class A {
    @Override
    // Returns number of vowels in a name
    public int countVowels(String name) {
    }
}
When the class is parsed by the Java parser
Then the compilation unit has 1 contained comments
Then comment 1 in compilation unit commented node is PrimitiveType

Scenario: We print correctly two consecutive line-comments in a class
 
Given the class:
class A {
  // foo
  // bar
  void aMethod(){}
}
When the class is parsed by the Java parser
Then it is printed as:
class A {

    // foo
    // bar
    void aMethod() {
    }
}

Scenario: We print correctly two consecutive line-comments in a method

Given the class:
class A {
  void aMethod(){
     // foo
     // bar
     int a;
  }
}
When the class is parsed by the Java parser
Then it is printed as:
class A {

    void aMethod() {
        // foo
        // bar
        int a;
    }
}

Scenario: We print correctly orphan comments in a for loop
Given the class:
class A {
    public static List calcularResultadoFinal(List avaliacoes) throws SQLException, ClassNotFoundException{
        for(Avaliacao avaliacao: avaliacoes){
            // if(avaliacao.obterAprovacao()){
            // avaliacao.setResultadoFinal("Aprovado");
            // }else{
            // avaliacao.setResultadoFinal("Reprovado");
            // }
            avaliacao.setEmAberto(false);
            avaliacao.editar();
        }
        return avaliacoes;
    }
}
When the class is parsed by the Java parser
Then it is printed as:
class A {

    public static List calcularResultadoFinal(List avaliacoes) throws SQLException, ClassNotFoundException {
        for (Avaliacao avaliacao : avaliacoes) {
            // if(avaliacao.obterAprovacao()){
            // avaliacao.setResultadoFinal("Aprovado");
            // }else{
            // avaliacao.setResultadoFinal("Reprovado");
            // }
            avaliacao.setEmAberto(false);
            avaliacao.editar();
        }
        return avaliacoes;
    }
}