blob: e509fc998d179e4ae011360227c91a68eb7b473b [file] [log] [blame]
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;
}
}