package org.marketcetera.trade;
import org.marketcetera.util.misc.ClassVersion;
import org.marketcetera.module.ExpectedFailure;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertNull;
import quickfix.Message;
import quickfix.field.*;
import quickfix.field.converter.UtcTimestampConverter;
import java.util.Map;
import java.util.HashMap;
import java.util.Date;
/* $License$ */
/**
* Tests {@link OrderCancelReject}
*
* @author anshul@marketcetera.com
* @version $Id: OrderCancelRejectTest.java 16154 2012-07-14 16:34:05Z colin $
* @since 1.0.0
*/
@ClassVersion("$Id: OrderCancelRejectTest.java 16154 2012-07-14 16:34:05Z colin $") //$NON-NLS-1$
public class OrderCancelRejectTest extends TypesTestBase {
/**
* Test report creation failures.
*
* @throws Exception if there were errors
*/
@Test
public void failures() throws Exception {
final BrokerID cID = new BrokerID("blah");
// null message
new ExpectedFailure<NullPointerException>(){
protected void run() throws Exception {
sFactory.createOrderCancelReject(null, cID, Originator.Server, null, null);
}
};
//null originator
new ExpectedFailure<NullPointerException>(){
protected void run() throws Exception {
sFactory.createOrderCancelReject
(getSystemMessageFactory().newOrderCancelReject(),
cID, null, null, null);
}
};
// wrong quickfix message type
final Message message = getSystemMessageFactory().newBasicOrder();
new ExpectedFailure<MessageCreationException>(
Messages.NOT_CANCEL_REJECT, message.toString()){
protected void run() throws Exception {
sFactory.createOrderCancelReject
(message, null, Originator.Server, null, null);
}
};
}
/**
* Test report getters.
*
* @throws Exception if there were errors.
*/
@Test
public void getters() throws Exception {
// report with all empty fields
Message msg = getSystemMessageFactory().newOrderCancelReject();
OrderCancelReject report = sFactory.createOrderCancelReject
(msg, null, Originator.Server, null, null);
assertReportBaseValues(report, null, null, null, null, null, null,
null, Originator.Server, null, null);
assertNull(report.getReportID());
//Verify toString() doesn't fail.
report.toString();
//report with fields filled in
BrokerID cID = new BrokerID("bro1");
String destOrderID = "brok3";
OrderID orderID = new OrderID("ord3");
OrderID origOrderID = new OrderID("ord2");
OrderStatus orderStatus = OrderStatus.Rejected;
String text = "Cancel it please.";
Date sendingTime = new Date();
Date transactTime = new Date();
UserID actorID = new UserID(2);
UserID viewerID = new UserID(3);
msg = getSystemMessageFactory().newOrderCancelReject(
new quickfix.field.OrderID(destOrderID),
new ClOrdID(orderID.getValue()),
new OrigClOrdID(origOrderID.getValue()),
text, null);
msg.getHeader().setField(new SendingTime(sendingTime));
msg.setField(new TransactTime(transactTime));
report = sFactory.createOrderCancelReject(msg, cID, Originator.Broker,
actorID, viewerID);
assertReportBaseValues(report, cID, orderID, orderStatus, origOrderID,
sendingTime, text, destOrderID,
Originator.Broker, actorID, viewerID);
assertNull(report.getReportID());
report.toString();
//Verify FIX fields returned in the map.
Map<Integer,String> expected = new HashMap<Integer, String>();
expected.put(OrdStatus.FIELD, String.valueOf(orderStatus.getFIXValue()));
expected.put(quickfix.field.OrderID.FIELD, destOrderID);
expected.put(Text.FIELD, text);
expected.put(CxlRejResponseTo.FIELD,
String.valueOf(CxlRejResponseTo.ORDER_CANCEL_REQUEST));
expected.put(OrigClOrdID.FIELD, origOrderID.getValue());
expected.put(ClOrdID.FIELD, orderID.getValue());
expected.put(TransactTime.FIELD, UtcTimestampConverter.convert(
transactTime, true));
final Map<Integer, String> actual = ((FIXMessageSupport) report).getFields();
assertEquals(expected, actual);
//Verify that the map is not modifiable
new ExpectedFailure<UnsupportedOperationException>(){
protected void run() throws Exception {
actual.clear();
}
};
assertSame(msg, ((FIXMessageSupport)report).getMessage());
}
}