Fixed missing description for AssumeThatInsteadOfReturn inspection. Added new AssertThatCollectionOrMapExpression inspection that tries to pull out methods such as isEmpty() or contains() out of an actual assertThat() expression. Added more method calls that are considered extension points.
164 lines
5.2 KiB
Java
164 lines
5.2 KiB
Java
import org.junit.Test;
|
|
|
|
import java.util.*;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
public class AssumeThat {
|
|
|
|
@Test
|
|
public void junit4_return_very_early() {
|
|
if (new Random().nextBoolean()) {
|
|
return;
|
|
} else System.out.println("sweet!"); // single else statement
|
|
String foobar = System.getProperty("foobar");
|
|
assertThat(foobar).isNotEmpty();
|
|
}
|
|
|
|
@Test
|
|
public void junit4_return_in_else_branch_with_declaration_in_code_block_and_lots_of_comments() {
|
|
// primary comments
|
|
if (new Random().nextBoolean()) /* strange place for a comment */ {
|
|
// Block start comment will be retained
|
|
String anotherString = "narf"; // This one is likely to be kept
|
|
assertThat(foobar).isNotEmpty();
|
|
assertThat(foobar).isEqualTo(anotherString);
|
|
// Block end comment is also going to be retained
|
|
} /* weird places */ else /* more weird places */ { // this one is lost
|
|
return; // Would be sweet to keep this comment, too.
|
|
} // another comment lost
|
|
// well, well, let's do some checks
|
|
String foobar = System.getProperty("foobar");
|
|
assertThat(foobar).isNotEmpty();
|
|
}
|
|
|
|
@org.junit.jupiter.api.Test
|
|
public void junit5_return_after_call_without_else_branch() {
|
|
String foobar = System.getProperty("car_manufacturer");
|
|
if (foobar.equals("Volkswagen")) return; // no need for Volkswagen to perform tests
|
|
assertThat(foobar).isNotEmpty();
|
|
}
|
|
|
|
@org.junit.jupiter.api.Test
|
|
public void junit5_return_with_empty_else_block() {
|
|
String foobar = System.getProperty("car_manufacturer");
|
|
if (foobar.equals("Volkswagen")) return; else {}
|
|
assertThat(foobar).isNotEmpty();
|
|
}
|
|
|
|
@org.junit.jupiter.api.TestTemplate
|
|
public void junit5_return_inside_recursion_with_comments() {
|
|
String foobar = System.getProperty("car_manufacturer");
|
|
if (foobar != null) {
|
|
if (!foobar.equals("Volkswagen")) {
|
|
// I doubted this comment will be retained -- but surprise!
|
|
assertThat(foobar).isNotEmpty();
|
|
// we might keep this one alright.
|
|
foobar = "narf";
|
|
// And the final one? Again what learned.
|
|
} else {
|
|
// ooops, how did that happen?
|
|
return;
|
|
}
|
|
}
|
|
assertThat(foobar).startsWith("another ecology rapist");
|
|
if(foobar.length() == 0)
|
|
{
|
|
return;
|
|
}
|
|
assertThat(foobar).endsWith("!!!");
|
|
}
|
|
|
|
@Test
|
|
public void junit4_return_after_assertion() {
|
|
String foobar = System.getProperty("car_manufacturer");
|
|
assertThat(foobar).isNotNull();
|
|
if (!foobar.equals("Volkswagen")) {
|
|
assertThat(foobar).isNotEmpty();
|
|
} else {
|
|
return;
|
|
}
|
|
assertThat(foobar).startsWith("another ecology rapist");
|
|
}
|
|
|
|
@Test
|
|
public void junit4_return_after_assertions_in_subroutine() {
|
|
String foobar = System.getProperty("car_manufacturer");
|
|
assertStuff(foobar);
|
|
if (!foobar.equals("Volkswagen")) {
|
|
assertThat(foobar).isNotEmpty();
|
|
} else {
|
|
return;
|
|
}
|
|
assertThat(foobar).startsWith("another ecology rapist");
|
|
}
|
|
|
|
@Test
|
|
public void junit4_return_after_assertions_in_deep_subroutine() {
|
|
String foobar = System.getProperty("car_manufacturer");
|
|
firstMethod();
|
|
if (!foobar.equals("Volkswagen")) {
|
|
assertThat(foobar).isNotEmpty();
|
|
} else {
|
|
return;
|
|
}
|
|
assertThat(foobar).startsWith("another ecology rapist");
|
|
}
|
|
|
|
@Test
|
|
public void junit4_return_after_assertions_in_deep_subroutine_with_recursion() {
|
|
String foobar = System.getProperty("car_manufacturer");
|
|
firstMethodWithPotentialRecursion();
|
|
if (!foobar.equals("Volkswagen")) {
|
|
assertThat(foobar).isNotEmpty();
|
|
} else {
|
|
return;
|
|
}
|
|
assertThat(foobar).startsWith("another ecology rapist");
|
|
}
|
|
|
|
@Test
|
|
public void junit4_no_harm_with_infinite_recursion() {
|
|
String foobar = System.getProperty("car_manufacturer");
|
|
infiniteRecursion();
|
|
if (!foobar.equals("Volkswagen")) {
|
|
assertThat(foobar).isNotEmpty();
|
|
} else {
|
|
return;
|
|
}
|
|
assertThat(foobar).startsWith("another ecology rapist");
|
|
}
|
|
|
|
private void assertStuff(String foobar) {
|
|
if (new Random().nextBoolean()) {
|
|
assertThat(foobar).isNotEmpty();
|
|
} else {
|
|
assertThat(foobar).isNull();
|
|
}
|
|
}
|
|
|
|
private void firstMethod() {
|
|
if (new Random().nextBoolean()) {
|
|
assertStuff("narf");
|
|
}
|
|
}
|
|
|
|
private void firstMethodWithPotentialRecursion() {
|
|
if (new Random().nextBoolean()) {
|
|
assertStuff("narf");
|
|
} else {
|
|
infiniteRecursion();
|
|
}
|
|
}
|
|
|
|
private void infiniteRecursion() {
|
|
secondaryRecursion();
|
|
secondaryRecursion();
|
|
}
|
|
|
|
private void secondaryRecursion() {
|
|
infiniteRecursion();
|
|
infiniteRecursion();
|
|
}
|
|
}
|