package com.mygeopay.core.exchange.shapeshift; import com.mygeopay.core.coins.BitcoinMain; import com.mygeopay.core.coins.CoinType; import com.mygeopay.core.coins.DogecoinMain; import com.mygeopay.core.coins.FiatValue; import com.mygeopay.core.coins.NuBitsMain; import com.mygeopay.core.exchange.shapeshift.data.ShapeShiftExchangeRate; import com.mygeopay.core.util.ExchangeRateBase; import org.junit.Test; import static org.junit.Assert.assertEquals; /** * @author John L. Jegutanis */ public class ExchangeRateTest { final CoinType BTC = BitcoinMain.get(); final CoinType DOGE = DogecoinMain.get(); final CoinType NBT = NuBitsMain.get(); @Test public void baseFee() { ShapeShiftExchangeRate rate = new ShapeShiftExchangeRate(BTC, NBT, "100", "0.01"); assertEquals(BTC.value("1"), rate.value1); assertEquals(NBT.value("100"), rate.value2); assertEquals(NBT.value("0.01"), rate.minerFee); assertEquals(NBT.value("99.99"), rate.convert(BTC.oneCoin())); assertEquals(BTC.value("1"), rate.convert(NBT.value("99.99"))); rate = new ShapeShiftExchangeRate(BTC.oneCoin(), DOGE.value("1911057.69230769"), DOGE.value("1")); assertEquals(BTC.value("1"), rate.value1); assertEquals(DOGE.value("1911057.69230769"), rate.value2); assertEquals(DOGE.value("1"), rate.minerFee); assertEquals(BTC.value("0.00052379"), rate.convert(DOGE.value("1000"))); rate = new ShapeShiftExchangeRate(BTC.oneCoin(), DOGE.value("1878207.54716981"), DOGE.value("1")); assertEquals(BTC.value("1"), rate.value1); assertEquals(DOGE.value("1878207.54716981"), rate.value2); assertEquals(DOGE.value("1"), rate.minerFee); assertEquals(BTC.value("0.00532476"), rate.convert(DOGE.value("10000"))); } @Test public void zeroValues() { ShapeShiftExchangeRate rate = new ShapeShiftExchangeRate(BTC, NBT, "100", "0.01"); assertEquals(BTC.value("0"), rate.convert(NBT.value("0"))); assertEquals(NBT.value("0"), rate.convert(BTC.value("0"))); } @Test public void smallValues() { ShapeShiftExchangeRate rate = new ShapeShiftExchangeRate(DOGE, BTC, "5.1e-7", "0.0001"); assertEquals(BTC.value("0"), rate.convert(DOGE.value("1"))); } @Test(expected = IllegalArgumentException.class) public void zeroExchangeRate() throws Exception { new ShapeShiftExchangeRate(BTC, NBT, "0", "0.01"); } }