Package com.xeiam.xchange.cryptsy.dto

Source Code of com.xeiam.xchange.cryptsy.dto.CryptsyAdapterTest

package com.xeiam.xchange.cryptsy.dto;

import static org.fest.assertions.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.xeiam.xchange.cryptsy.CryptsyAdapters;
import com.xeiam.xchange.cryptsy.CryptsyUtils;
import com.xeiam.xchange.cryptsy.dto.account.CryptsyAccountInfoReturn;
import com.xeiam.xchange.cryptsy.dto.marketdata.CryptsyGetMarketsReturn;
import com.xeiam.xchange.cryptsy.dto.marketdata.CryptsyMarketTradesReturn;
import com.xeiam.xchange.cryptsy.dto.marketdata.CryptsyOrderBookReturn;
import com.xeiam.xchange.cryptsy.dto.marketdata.CryptsyPublicMarketData;
import com.xeiam.xchange.cryptsy.dto.marketdata.CryptsyPublicMarketDataReturn;
import com.xeiam.xchange.cryptsy.dto.marketdata.CryptsyPublicOrderbook;
import com.xeiam.xchange.cryptsy.dto.marketdata.CryptsyPublicOrderbookReturn;
import com.xeiam.xchange.cryptsy.dto.trade.CryptsyOpenOrdersReturn;
import com.xeiam.xchange.cryptsy.dto.trade.CryptsyTradeHistoryReturn;
import com.xeiam.xchange.currency.Currencies;
import com.xeiam.xchange.currency.CurrencyPair;
import com.xeiam.xchange.dto.Order.OrderType;
import com.xeiam.xchange.dto.account.AccountInfo;
import com.xeiam.xchange.dto.marketdata.OrderBook;
import com.xeiam.xchange.dto.marketdata.Ticker;
import com.xeiam.xchange.dto.marketdata.Trade;
import com.xeiam.xchange.dto.marketdata.Trades;
import com.xeiam.xchange.dto.trade.LimitOrder;
import com.xeiam.xchange.dto.trade.OpenOrders;
import com.xeiam.xchange.dto.trade.UserTrade;
import com.xeiam.xchange.dto.trade.UserTrades;
import com.xeiam.xchange.dto.trade.Wallet;

public class CryptsyAdapterTest {

  @Test
  public void testAdaptOrderBook() throws IOException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_MarketOrders_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    CryptsyOrderBookReturn cryptsyOrderBook = mapper.readValue(is, CryptsyOrderBookReturn.class);

    OrderBook adaptedOrderBook = CryptsyAdapters.adaptOrderBook(cryptsyOrderBook, CurrencyPair.WDC_BTC);

    assertEquals(adaptedOrderBook.getAsks().size(), cryptsyOrderBook.getReturnValue().sellOrders().size());
    assertEquals(adaptedOrderBook.getBids().size(), cryptsyOrderBook.getReturnValue().buyOrders().size());
    assertNotNull(adaptedOrderBook.getTimeStamp());
  }

  @Test
  public void testAdaptOrderBookPublic() throws IOException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_Orderbook_Public_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    Map<Integer, CryptsyPublicOrderbook> cryptsyOrderBookMap = CryptsyAdapters.adaptPublicOrderBookMap(mapper.readValue(is, CryptsyPublicOrderbookReturn.class).getReturnValue());

    List<OrderBook> adaptedOrderBookList = CryptsyAdapters.adaptPublicOrderBooks(cryptsyOrderBookMap);
    assertThat(adaptedOrderBookList).hasSize(1);

    OrderBook adaptedOrderBook = adaptedOrderBookList.get(0);
    assertEquals(adaptedOrderBook.getAsks().size(), 3);
    assertEquals(adaptedOrderBook.getBids().size(), 3);
    assertNotNull(adaptedOrderBook.getTimeStamp());

    LimitOrder asks = adaptedOrderBook.getAsks().get(0);
    assertThat(asks.getCurrencyPair()).isEqualTo(CurrencyPair.DOGE_LTC);
    assertThat(asks.getId()).isNull();
    assertThat(asks.getLimitPrice()).isEqualTo("0.00003495");
    assertThat(asks.getTradableAmount()).isEqualTo("334369.75217020");
    assertThat(asks.getType()).isEqualTo(OrderType.ASK);
  }

  @Test
  public void testAdaptOrderBookPublicWithEmptyOrders() throws IOException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_AllOrderbook_Public_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    Map<Integer, CryptsyPublicOrderbook> cryptsyOrderBookMap = CryptsyAdapters.adaptPublicOrderBookMap(mapper.readValue(is, CryptsyPublicOrderbookReturn.class).getReturnValue());

    List<OrderBook> adaptedOrderBookList = CryptsyAdapters.adaptPublicOrderBooks(cryptsyOrderBookMap);
    assertThat(adaptedOrderBookList).hasSize(2);
  }

  @Test
  public void testAdaptTrades() throws IOException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_MarketTrades_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    CryptsyMarketTradesReturn cryptsyTrades = mapper.readValue(is, CryptsyMarketTradesReturn.class);

    Trades adaptedTrades = CryptsyAdapters.adaptTrades(cryptsyTrades, CurrencyPair.WDC_BTC);

    assertEquals(adaptedTrades.getTrades().size(), cryptsyTrades.getReturnValue().size());
  }

  @Test
  public void testAdaptTradesPublic() throws IOException, ParseException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_MarketData_Public_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    Map<Integer, CryptsyPublicMarketData> cryptsyMarketData = CryptsyAdapters.adaptPublicMarketDataMap(mapper.readValue(is, CryptsyPublicMarketDataReturn.class).getReturnValue());

    Map<CurrencyPair, Trades> adaptedTradesMap = CryptsyAdapters.adaptPublicTrades(cryptsyMarketData);

    Trades adaptedTrades = adaptedTradesMap.get(CurrencyPair.DOGE_LTC);
    List<Trade> adaptedTradesList = adaptedTrades.getTrades();
    assertThat(adaptedTradesList).hasSize(2);

    Trade adaptedTrade = adaptedTradesList.get(1);
    assertThat(adaptedTrade.getCurrencyPair()).isEqualTo(CurrencyPair.DOGE_LTC);
    assertThat(adaptedTrade.getId()).isEqualTo("47692497");
    assertThat(adaptedTrade.getPrice()).isEqualTo("0.00003495");
    assertThat(adaptedTrade.getTradableAmount()).isEqualTo("2961.55892792");
    assertThat(adaptedTrade.getTimestamp()).isEqualTo(CryptsyUtils.convertDateTime("2014-05-29 21:49:34"));
    assertThat(adaptedTrade.getType()).isNull();
  }

  @Test
  public void testAdaptTradesPublicNoTrades() throws IOException, ParseException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_MarketData_Public_Data_NoTrades.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    Map<Integer, CryptsyPublicMarketData> cryptsyMarketData = CryptsyAdapters.adaptPublicMarketDataMap(mapper.readValue(is, CryptsyPublicMarketDataReturn.class).getReturnValue());

    Map<CurrencyPair, Trades> adaptedTradesMap = CryptsyAdapters.adaptPublicTrades(cryptsyMarketData);

    Trades adaptedTrades = adaptedTradesMap.get(CurrencyPair.FTC_USD);
    List<Trade> adaptedTradesList = adaptedTrades.getTrades();
    assertThat(adaptedTradesList).hasSize(0);
  }

  @Test
  public void testAdaptTicker() throws IOException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_GetMarket_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    CryptsyGetMarketsReturn cryptsyTrades = mapper.readValue(is, CryptsyGetMarketsReturn.class);

    Ticker adaptedTicker = CryptsyAdapters.adaptTicker(cryptsyTrades, CurrencyPair.WDC_BTC);

    assertEquals(adaptedTicker.getCurrencyPair(), CurrencyPair.WDC_BTC);
    assertEquals(adaptedTicker.getLast(), new BigDecimal("0.00006187"));
    assertEquals(adaptedTicker.getLow(), new BigDecimal("0.00006040"));
    assertEquals(adaptedTicker.getHigh(), new BigDecimal("0.00006335"));
    assertEquals(adaptedTicker.getVolume(), new BigDecimal("61283.49173059"));
  }

  @Test
  public void testAdaptTickerPublic() throws IOException, ParseException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_MarketData_Public_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    Map<Integer, CryptsyPublicMarketData> cryptsyMarketData = CryptsyAdapters.adaptPublicMarketDataMap(mapper.readValue(is, CryptsyPublicMarketDataReturn.class).getReturnValue());

    List<Ticker> adaptedTickerList = CryptsyAdapters.adaptPublicTickers(cryptsyMarketData);
    assertThat(adaptedTickerList).hasSize(1);

    Ticker adaptedTicker = adaptedTickerList.get(0);
    assertEquals(adaptedTicker.getCurrencyPair(), CurrencyPair.DOGE_LTC);
    assertEquals(adaptedTicker.getLast(), new BigDecimal("0.00003495"));
    assertEquals(adaptedTicker.getBid(), new BigDecimal("00.00003485"));
    assertEquals(adaptedTicker.getAsk(), new BigDecimal("0.00003495"));
    assertThat(adaptedTicker.getLow()).isNull();
    assertThat(adaptedTicker.getHigh()).isNull();
    assertEquals(adaptedTicker.getVolume(), new BigDecimal("13154836.13271418"));
  }

  @Test
  public void testAdaptTickerPublicNoTrades() throws IOException, ParseException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_MarketData_Public_Data_NoTrades.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    Map<Integer, CryptsyPublicMarketData> cryptsyMarketData = CryptsyAdapters.adaptPublicMarketDataMap(mapper.readValue(is, CryptsyPublicMarketDataReturn.class).getReturnValue());

    List<Ticker> adaptedTickerList = CryptsyAdapters.adaptPublicTickers(cryptsyMarketData);
    assertThat(adaptedTickerList).hasSize(1);

    Ticker adaptedTicker = adaptedTickerList.get(0);
    assertEquals(adaptedTicker.getCurrencyPair(), CurrencyPair.FTC_USD);
    assertThat(adaptedTicker.getLast()).isNull();
    assertThat(adaptedTicker.getBid()).isNull();
    assertEquals(adaptedTicker.getAsk(), new BigDecimal("0.98000000"));
    assertThat(adaptedTicker.getLow()).isNull();
    assertThat(adaptedTicker.getHigh()).isNull();
    assertEquals(adaptedTicker.getVolume(), new BigDecimal("0E-8"));
  }

  @Test
  public void testAdaptAccountInfo() throws IOException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/account/Sample_GetInfo_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    CryptsyAccountInfoReturn accountInfo = mapper.readValue(is, CryptsyAccountInfoReturn.class);

    AccountInfo adaptedAccountInfo = CryptsyAdapters.adaptAccountInfo(accountInfo);

    List<Wallet> wallets = adaptedAccountInfo.getWallets();
    assertEquals(wallets.size(), 150);
    for (Wallet wallet : wallets) {
      if (wallet.getCurrency().equals("BTC")) {
        assertEquals(wallet.getBalance(), new BigDecimal("0.01527794"));
      }
      if (wallet.getCurrency().equals("ZET")) {
        assertEquals(wallet.getBalance(), new BigDecimal("1.35094992"));
      }
      if (wallet.getCurrency().equals("XPM")) {
        assertEquals(wallet.getBalance(), new BigDecimal("0.00000057"));
      }
    }
  }

  @Test
  public void testAdaptOpenOrders() throws IOException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/trade/Sample_AllMyOrders_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    CryptsyOpenOrdersReturn cryptsyOpenOrders = mapper.readValue(is, CryptsyOpenOrdersReturn.class);

    OpenOrders adaptedOpenOrders = CryptsyAdapters.adaptOpenOrders(cryptsyOpenOrders);

    assertEquals(adaptedOpenOrders.getOpenOrders().size(), 9);

    LimitOrder order = adaptedOpenOrders.getOpenOrders().get(0);
    assertEquals(order.getId(), "90039904");
    assertEquals(order.getLimitPrice(), new BigDecimal("0.00000001"));
    assertEquals(order.getTradableAmount(), new BigDecimal("50000.10000000"));
    assertEquals(order.getCurrencyPair().baseSymbol, "WDC");
    assertEquals(order.getCurrencyPair().counterSymbol, "BTC");
    assertEquals(order.getType(), OrderType.BID);

    LimitOrder order2 = adaptedOpenOrders.getOpenOrders().get(8);
    assertEquals(order2.getId(), "90041288");
    assertEquals(order2.getLimitPrice(), new BigDecimal("0.00000009"));
    assertEquals(order2.getTradableAmount(), new BigDecimal("50001.00000000"));
    assertEquals(order2.getCurrencyPair().baseSymbol, "LTC");
    assertEquals(order2.getCurrencyPair().counterSymbol, "BTC");
    assertEquals(order2.getType(), OrderType.BID);
  }

  @Test
  public void testAdaptTradeHistory() throws IOException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/trade/Sample_AllMyTrades_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    CryptsyTradeHistoryReturn cryptsyTradeHistory = mapper.readValue(is, CryptsyTradeHistoryReturn.class);

    UserTrades adaptedTrades = CryptsyAdapters.adaptTradeHistory(cryptsyTradeHistory);

    UserTrade trade = adaptedTrades.getUserTrades().get(0);
    assertEquals(trade.getCurrencyPair(), CurrencyPair.LTC_BTC);
    assertEquals(trade.getId(), "9982231");
    assertEquals(trade.getOrderId(), "23569349");
    assertEquals(trade.getType(), OrderType.BID);
    assertEquals(trade.getTradableAmount(), new BigDecimal("0.15949550"));
    assertEquals(trade.getPrice(), new BigDecimal("0.03128615"));
    assertEquals(trade.getFeeAmount(), new BigDecimal("0.000009980"));
    assertEquals(trade.getFeeCurrency(), Currencies.BTC);
  }

  @Test
  public void testAdaptCurrencyPairs() throws IOException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_AllMarketData_Public_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    Map<Integer, CryptsyPublicMarketData> cryptsyMarketData = CryptsyAdapters.adaptPublicMarketDataMap(mapper.readValue(is, CryptsyPublicMarketDataReturn.class).getReturnValue());

    Collection<CurrencyPair> adaptedCurrencyPairs = CryptsyAdapters.adaptCurrencyPairs(cryptsyMarketData);

    assertEquals(adaptedCurrencyPairs.size(), 238);
  }

  @SuppressWarnings("rawtypes")
  @Test
  public void testAdaptMarketSets() throws IOException {

    // Read in the JSON from the example resources
    InputStream is = CryptsyAdapterTest.class.getResourceAsStream("/marketdata/Sample_AllMarketData_Public_Data.json");

    // Use Jackson to parse it
    ObjectMapper mapper = new ObjectMapper();
    Map<Integer, CryptsyPublicMarketData> cryptsyMarketData = CryptsyAdapters.adaptPublicMarketDataMap(mapper.readValue(is, CryptsyPublicMarketDataReturn.class).getReturnValue());

    HashMap[] marketSets = CryptsyAdapters.adaptMarketSets(cryptsyMarketData);
    assertEquals(marketSets[0].get(135), CurrencyPair.DOGE_LTC);
    assertEquals(marketSets[1].get(CurrencyPair.DOGE_LTC), 135);
  }
}
TOP

Related Classes of com.xeiam.xchange.cryptsy.dto.CryptsyAdapterTest

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.