package org.marketcetera.client; import org.marketcetera.util.misc.ClassVersion; import org.marketcetera.util.ws.stateless.Node; import org.marketcetera.util.test.RegExAssert; import org.marketcetera.core.LoggerConfiguration; import org.marketcetera.trade.*; import org.junit.BeforeClass; import org.junit.AfterClass; import org.junit.After; import org.junit.Test; /* $License$ */ /** * Verifies integration with * {@link org.marketcetera.trade.Factory#setOrderIDFactory(org.marketcetera.core.IDFactory)} * * @author anshul@marketcetera.com * @version $Id: FactoryIntegrationTest.java 16154 2012-07-14 16:34:05Z colin $ * @since 1.0.0 */ @ClassVersion("$Id: FactoryIntegrationTest.java 16154 2012-07-14 16:34:05Z colin $") //$NON-NLS-1$ public class FactoryIntegrationTest { @BeforeClass public static void setup() throws Exception { LoggerConfiguration.logSetup(); initServer(); } @AfterClass public static void closeServer() throws Exception { if (sServer != null) { sServer.close(); sServer = null; } } @Test public void nullIDPrefix() throws Exception { initClient(null); String idPattern = MockServiceImpl.ID_PREFIX + "\\d+00\\d"; Factory factory = Factory.getInstance(); //Create orders and verify their IDs match expected patterns RegExAssert.assertMatches(idPattern, factory.createOrderSingle().getOrderID().toString()); RegExAssert.assertMatches(idPattern, factory.createOrderCancel(null).getOrderID().toString()); RegExAssert.assertMatches(idPattern, factory.createOrderReplace(null).getOrderID().toString()); } @Test public void idPrefix() throws Exception { String prefix = "cetera"; initClient(prefix); String idPattern = prefix + MockServiceImpl.ID_PREFIX + "\\d+00\\d"; Factory factory = Factory.getInstance(); //Create orders and verify their IDs match expected patterns RegExAssert.assertMatches(idPattern, factory.createOrderSingle().getOrderID().toString()); RegExAssert.assertMatches(idPattern, factory.createOrderCancel(null).getOrderID().toString()); RegExAssert.assertMatches(idPattern, factory.createOrderReplace(null).getOrderID().toString()); } @Test public void generateMultipleIDs() throws Exception { String prefix = "cetera"; initClient(prefix); Factory factory = Factory.getInstance(); //Create orders enough times to request IDs from server more than once. String idPattern = prefix + MockServiceImpl.ID_PREFIX + "\\d{4,5}"; short max = ClientIDFactory.MAX_CLIENT_ID * 3; for(int i = 0; i < max; i++) { RegExAssert.assertMatches(idPattern, factory.createOrderSingle().getOrderID().toString()); } } @After public void closeClient() { if(mClient != null) { mClient.close(); } } private void initClient(String inOrderIDPrefix) throws ConnectionException, ClientInitException { ClientParameters parameters = new ClientParameters("name", "name".toCharArray(), MockServer.URL, Node.DEFAULT_HOST, Node.DEFAULT_PORT, inOrderIDPrefix); ClientManager.init(parameters); mClient = ClientManager.getInstance(); } private static void initServer() { if (sServer == null) { sServer = new MockServer(); } } private static MockServer sServer; private Client mClient; }