Package whitewerx.com.trapos.translator

Source Code of whitewerx.com.trapos.translator.TradeTranslatorTest

package whitewerx.com.trapos.translator;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;

import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.junit.Test;
import org.junit.runner.RunWith;

import whitewerx.com.trapos.model.Amount;
import whitewerx.com.trapos.model.Currency;
import whitewerx.com.trapos.model.Rate;
import whitewerx.com.trapos.model.Trade;
import whitewerx.com.trapos.model.TradeType;
import whitewerx.com.trapos.translators.TradeTranslator;
import whitewerx.com.trapos.translators.TranslateException;
import static whitewerx.com.trapos.util.CurrencyPairProvider.EURUSD;
import static whitewerx.com.trapos.util.CurrencyPairProvider.USDCAD;

@RunWith(JMock.class)
public class TradeTranslatorTest {
   
    Mockery context = new Mockery();
   
    /**
     * Given T|B|5.1t|EURUSD|1.3124
     *
     * The translated trade should be: Buy 5.1 thousand EUR at @ 1.3124 EURUSD.
     */
    @Test
    public void translatesATradeMessage() throws Exception {
        String delimitedTrade = "T|B|5.1t|R|EURUSD|1.3124";
       
        Amount fivePointOneThousand = new Amount(5.1 * 1000, new Currency("EUR"));
        Rate atEURUSDRate = new Rate(1.3124, EURUSD);
        final Trade expected = new Trade(TradeType.BUY, fivePointOneThousand, atEURUSDRate);
       
        TradeTranslator t = new TradeTranslator();
        Trade trade = t.translate(delimitedTrade);
        assertThat(trade, equalTo(expected));
    }

    @Test
    public void translatesATradeMessageWithNoMultiplier() throws Exception {
        String delimitedTrade = "T|S|5.1|R|EURUSD|1.3124";
       
        Amount fivePointOne = new Amount(5.1, new Currency("EUR"));
        Rate atEURUSDRate = new Rate(1.3124, EURUSD);
        final Trade expected = new Trade(TradeType.SELL, fivePointOne, atEURUSDRate);
       
        TradeTranslator t = new TradeTranslator();
        Trade trade = t.translate(delimitedTrade);
        assertThat(trade, equalTo(expected));
    }
   
    @Test
    public void translatesATradeMessageMillionsMultiplier() throws Exception {
        String delimitedTrade = "T|S|2m|R|USDCAD|1.0012";
       
        Amount twoMillion = new Amount(2000000.0, new Currency("USD"));
        Rate atUSDCADRate = new Rate(1.0012, USDCAD);
        final Trade expected = new Trade(TradeType.SELL, twoMillion, atUSDCADRate);
       
        TradeTranslator t = new TradeTranslator();
        Trade trade = t.translate(delimitedTrade);
        assertThat(trade, equalTo(expected));
    }   
   
    @Test(expected=TranslateException.class)
    public void translateInvalidTradeMessage() throws Exception {
        String invalidTrade = "T||5.1|R|EURUSD|1.3124";

        TradeTranslator t = new TradeTranslator();
        t.translate(invalidTrade);
    }

    @Test
    public void shouldTranslateTradeMessages(){
        String delimitedTrade = "T";
       
        TradeTranslator tradeTranslator = new TradeTranslator();
        assertThat(tradeTranslator.canHandle(delimitedTrade), equalTo(true));
    }
   
    @Test
    public void shouldNotTranslateAnyOtherMessageTypes(){
        String otherMessageType = "C";
       
        TradeTranslator tradeTranslator = new TradeTranslator();
        assertThat(tradeTranslator.canHandle(otherMessageType), equalTo(false));
    }   
}
TOP

Related Classes of whitewerx.com.trapos.translator.TradeTranslatorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.