diff options
Diffstat (limited to 'javaparser-testing/src/test/resources/com/github/javaparser/bdd/comment_attribution_scenarios.story')
-rw-r--r-- | javaparser-testing/src/test/resources/com/github/javaparser/bdd/comment_attribution_scenarios.story | 498 |
1 files changed, 498 insertions, 0 deletions
diff --git a/javaparser-testing/src/test/resources/com/github/javaparser/bdd/comment_attribution_scenarios.story b/javaparser-testing/src/test/resources/com/github/javaparser/bdd/comment_attribution_scenarios.story new file mode 100644 index 000000000..e509fc998 --- /dev/null +++ b/javaparser-testing/src/test/resources/com/github/javaparser/bdd/comment_attribution_scenarios.story @@ -0,0 +1,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; + } +} |