package net.pterodactylus.sone.utils;
import static net.pterodactylus.sone.utils.NumberParsers.parseInt;
import static net.pterodactylus.sone.utils.NumberParsers.parseLong;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
import org.junit.Test;
/**
* Unit test for {@link NumberParsers}.
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class NumberParsersTest {
@Test
// yes, this test is for coverage only.
public void constructorCanBeCalled() {
new NumberParsers();
}
@Test
public void nullIsParsedToDefaultInt() {
assertThat(parseInt(null, 17), is(17));
}
@Test
public void notANumberIsParsedToDefaultInt() {
assertThat(parseInt("not a number", 18), is(18));
}
@Test
public void intIsCorrectlyParsed() {
assertThat(parseInt("19", 0), is(19));
}
@Test
public void valueTooLargeForIntIsParsedToDefault() {
assertThat(parseInt("2147483648", 20), is(20));
}
@Test
public void valueTooSmallForIntIsParsedToDefault() {
assertThat(parseInt("-2147483649", 20), is(20));
}
@Test
public void nullCanBeDefaultIntValue() {
assertThat(parseInt("not a number", null), nullValue());
}
@Test
public void nullIsParsedToDefaultLong() {
assertThat(parseLong(null, 17L), is(17L));
}
@Test
public void notANumberIsParsedToDefaultLong() {
assertThat(parseLong("not a number", 18L), is(18L));
}
@Test
public void LongIsCorrectlyParsed() {
assertThat(parseLong("19", 0L), is(19L));
}
@Test
public void valueTooLargeForLongIsParsedToDefault() {
assertThat(parseLong("9223372036854775808", 20L), is(20L));
}
@Test
public void valueTooSmallForLongIsParsedToDefault() {
assertThat(parseLong("-9223372036854775809", 20L), is(20L));
}
@Test
public void nullCanBeDefaultLongValue() {
assertThat(parseLong("not a number", null), nullValue());
}
}