LoginSystem/src/test/java/fr/xephi/authme/util/ExceptionUtilsTest.java
ljacqu 329657bd5f
#1497 Show specific message for invalid YAML files (#1506)
* #1497 Throw dedicated exception for invalid YAML files and handle it on startup
- Wrap SnakeYAML exceptions when loading config.yml and commands.yml on startup into own exception type
- Handle exception type on startup with specific error message

* #1497 Fix inaccurate JavaDoc comment
2018-02-23 23:31:22 +01:00

55 lines
2.2 KiB
Java

package fr.xephi.authme.util;
import fr.xephi.authme.ReflectionTestUtils;
import org.junit.Test;
import java.util.ConcurrentModificationException;
import static org.hamcrest.Matchers.nullValue;
import static org.hamcrest.Matchers.sameInstance;
import static org.junit.Assert.assertThat;
/**
* Test for {@link ExceptionUtils}.
*/
public class ExceptionUtilsTest {
@Test
public void shouldFindWantedThrowable() {
// given
ConcurrentModificationException initialCme = new ConcurrentModificationException();
Throwable th = new Throwable(initialCme);
ConcurrentModificationException cme = new ConcurrentModificationException(th);
IllegalStateException ise = new IllegalStateException(cme);
UnsupportedOperationException uoe = new UnsupportedOperationException(ise);
ReflectiveOperationException roe = new ReflectiveOperationException(uoe);
// when
IllegalStateException resultIse = ExceptionUtils.findThrowableInCause(IllegalStateException.class, roe);
ConcurrentModificationException resultCme = ExceptionUtils.findThrowableInCause(ConcurrentModificationException.class, cme);
StackOverflowError resultSoe = ExceptionUtils.findThrowableInCause(StackOverflowError.class, cme);
// then
assertThat(resultIse, sameInstance(ise));
assertThat(resultCme, sameInstance(cme));
assertThat(resultSoe, nullValue());
}
@Test
public void shouldHandleCircularCausesGracefully() {
// given
IllegalStateException ise = new IllegalStateException();
UnsupportedOperationException uoe = new UnsupportedOperationException(ise);
ReflectiveOperationException roe = new ReflectiveOperationException(uoe);
ReflectionTestUtils.setField(Throwable.class, ise, "cause", roe);
// when
NullPointerException resultNpe = ExceptionUtils.findThrowableInCause(NullPointerException.class, uoe);
UnsupportedOperationException resultUoe = ExceptionUtils.findThrowableInCause(UnsupportedOperationException.class, uoe);
// then
assertThat(resultNpe, nullValue());
assertThat(resultUoe, sameInstance(uoe));
}
}