package quickfix; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import java.math.BigDecimal; import quickfix.field.Price; import quickfix.field.MsgType; import quickfix.fix42.NewOrderSingle; /** * @author toli * @version $Id$ */ public class DecimalFieldTest extends TestCase { public DecimalFieldTest(String inName) { super(inName); } public static Test suite() { return new TestSuite(DecimalFieldTest.class); } /** Verify that the round-tripping of BigDecimals works with messages */ public void testQuickFIXAssumptions() throws FieldNotFound, InvalidMessage { BigDecimal originalPrice = new BigDecimal("10.3000"); assertEquals(4, originalPrice.scale()); Message message = new NewOrderSingle(); message.setField(new Price(new BigDecimal("10.3000"))); BigDecimal extractedPrice = message.getDecimal(Price.FIELD); assertEquals(4, extractedPrice.scale()); assertEquals(new BigDecimal("10.3000"), extractedPrice); String newOrderString = message.toString(); Message rehydratedMessage = new Message(newOrderString); BigDecimal rehydratedPrice = rehydratedMessage.getDecimal(Price.FIELD); assertEquals(new BigDecimal("10.3000"), rehydratedPrice); assertEquals(4, rehydratedPrice.scale()); } }