package dbfit.environment; import static org.junit.Assert.*; import org.junit.Test; import org.junit.Rule; import org.junit.rules.ExpectedException; import java.math.BigDecimal; import dbfit.util.NormalisedBigDecimal; public class BigDecimalExactClassTransformerTest { private final BigDecimalExactClassTransformer bdt = new BigDecimalExactClassTransformer(); private final BigDecimal inBigDec = new BigDecimal("123.45"); @Rule public ExpectedException exception = ExpectedException.none(); @Test public void transformsBigDecimaltoBigDecimalTest() { BigDecimal bd = new BigDecimal(inBigDec.toString()); BigDecimal outBigDec = (BigDecimal) bdt.transform(bd); assertEquals(outBigDec, inBigDec); } @Test public void transformsNormalisedBigDecimaltoBigDecimalTest() { NormalisedBigDecimal nbd = new NormalisedBigDecimal(inBigDec); BigDecimal outBigDec = (BigDecimal) bdt.transform(nbd); assertEquals(outBigDec, inBigDec); } @Test public void rejectsNonBigDecimalInputTest() { Double notABigBecimal = 1.0; exception.expect(UnsupportedOperationException.class); exception.expectMessage("BigDecimalExactClassTransformer cannot transform objects of type java.lang.Double"); bdt.transform(notABigBecimal); } @Test public void transformsToExactlyBigDecimalTest() { NormalisedBigDecimal nbd = new NormalisedBigDecimal(inBigDec); Object outBigDec = bdt.transform(nbd); assertEquals(outBigDec.getClass(), BigDecimal.class); } }