package com.example.util.nullability;
import com.example.util.PreconfiguredRobolectricTestRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown;
@RunWith(PreconfiguredRobolectricTestRunner.class)
@SuppressWarnings("PMD.AvoidCatchingNPE")
public class PreconditionsTest {
@Test
public void check_argument_negative() {
// Act
try {
Preconditions.checkArgument(false);
failBecauseExceptionWasNotThrown(IllegalArgumentException.class);
} catch (IllegalArgumentException e) {
// Assert
assertThat(e).hasMessage("Argument failed check.");
}
}
@Test
public void check_argument_positive() {
Preconditions.checkArgument(true);
}
@Test
public void check_argument_with_message_negative() {
// Act
try {
Preconditions.checkArgument(false, "error message");
failBecauseExceptionWasNotThrown(IllegalArgumentException.class);
} catch (IllegalArgumentException e) {
// Assert
assertThat(e).hasMessage("error message");
}
}
@Test
public void check_argument_with_message_positive() {
Preconditions.checkArgument(true, "error message");
}
@Test
public void check_argument_with_message_and_arguments_positive() {
// Act
try {
Preconditions.checkArgument(false, "error message %s %s", "test", "lala");
failBecauseExceptionWasNotThrown(IllegalArgumentException.class);
} catch (IllegalArgumentException e) {
// Assert
assertThat(e).hasMessage("error message test lala");
}
}
@Test
public void check_argument_with_message_and_arguments_negative() {
Preconditions.checkArgument(true, "error message %s %s", "test", "lala");
}
@Test
public void check_nullity() {
// Act
try {
Preconditions.checkNotNull(null);
failBecauseExceptionWasNotThrown(NullPointerException.class);
} catch (NullPointerException e) {
// Assert
assertThat(e).hasMessage("Null check failed.");
}
}
@Test
public void check_non_nullity() {
Preconditions.checkNotNull(new Object());
}
@Test
public void check_nullity_with_message() {
// Act
try {
Preconditions.checkNotNull(null, "error message");
failBecauseExceptionWasNotThrown(NullPointerException.class);
} catch (NullPointerException e) {
// Assert
assertThat(e).hasMessage("error message");
}
}
@Test
public void check_non_nullity_with_message() {
Preconditions.checkNotNull(new Object(), "error message");
}
@Test
public void check_nullity_with_message_and_arguments() {
// Act
try {
Preconditions.checkNotNull(null, "error message %s %s", "test", "lala");
failBecauseExceptionWasNotThrown(NullPointerException.class);
} catch (NullPointerException e) {
// Assert
assertThat(e).hasMessage("error message test lala");
}
}
@Test
public void check_non_nullity_with_message_and_arguments() {
Preconditions.checkNotNull(new Object(), "error message %s %s", "test", "lala");
}
@Test
public void format_test() {
// Arrange
String expectedResult = "lala";
// Act
String actulResult = Preconditions.format("%s", "lala");
// Assert
assertThat(actulResult).isEqualTo(expectedResult);
}
@Test
public void format_test_2() {
// Arrange
String expectedResult = "lalayolo";
// Act
String actulResult = Preconditions.format("%s%s", "lala", "yolo");
// Assert
assertThat(actulResult).isEqualTo(expectedResult);
}
@Test
public void format_test_3() {
// Arrange
String expectedResult = "lalayolo%s";
// Act
String actulResult = Preconditions.format("%s%s%s", "lala", "yolo");
// Assert
assertThat(actulResult).isEqualTo(expectedResult);
}
@Test
public void format_test_4() {
// Arrange
String expectedResult = "lala [yolo]";
// Act
String actulResult = Preconditions.format("%s", "lala", "yolo");
// Assert
assertThat(actulResult).isEqualTo(expectedResult);
}
@Test
public void format_test_5() {
// Arrange
String expectedResult = "null [lala, yolo]";
// Act
String actulResult = Preconditions.format(null, "lala", "yolo");
// Assert
assertThat(actulResult).isEqualTo(expectedResult);
}
}