package dbfit.util;
import java.math.BigDecimal;
import org.junit.Test;
import static org.junit.Assert.*;
public class ValueParserTest {
private ValueParser parser = new ValueParser();
@Test
public void parsingWithoutCustomDelegateReturnsItsInput() {
assertEquals("abc", parser.parse("abc"));
}
@Test
public void canParseEmptyString() {
assertEquals("", parser.parse(""));
}
@Test
public void canParseNullValue() {
assertEquals(null, parser.parse(null));
}
@Test
public void canParseNullString() {
assertEquals(null, parser.parse("null"));
}
@Test
public void canParseMixedCaseNullString() {
assertEquals(null, parser.parse("NulL"));
}
@Test
public void canParseWithParseDelegateClass() {
NormalisedBigDecimal expected = new NormalisedBigDecimal(new BigDecimal(123));
assertEquals(expected, parser.parse("123", BigDecimalParseDelegate.class));
}
@Test
public void canParseWithParseDelegateClassName() {
NormalisedBigDecimal expected = new NormalisedBigDecimal(new BigDecimal(123));
assertEquals(expected, parser.parse("123", "dbfit.util.BigDecimalParseDelegate"));
}
@Test
public void canParseUsingDelgateWithValueOfMethod() {
assertEquals(Integer.valueOf(7), parser.parse("7", "java.lang.Integer"));
}
@Test
public void canParseFromSymbolReference() {
SymbolUtil.setSymbol("SYMBOL_X", "X");
assertEquals("X", parser.parse("<<SYMBOL_X"));
}
}