internal ExchangeBuilderWithOptions UseExchange(string exchange)
        {
            switch (exchange)
            {
            case ExchangeNames.Binance:
                builder = new BinanceExchangeBuilder();
                break;

            case ExchangeNames.Bitfinex:
                builder = new BitfinexExchangeBuilder();
                break;

            case ExchangeNames.Bittrex:
                builder = new BittrexExchangeBuilder();
                break;

            case ExchangeNames.Cobinhood:
                builder = new CobinhoodExchangeBuilder();
                break;

            case ExchangeNames.Poloniex:
                builder = new PoloniexExchangeBuilder();
                break;

            default:
                throw new ExchangeClientException($"\"{exchange}\" is not supported. Supported exchanges:\n{ String.Join(", \n", ExchangeNames.List) }");
            }
            return(this);
        }
 public void InjectDependencies(
     IGameCore gameCore, ICivDiscoveryCanon civDiscoveryCanon,
     IDiplomacyCore diplomacyCore, IExchangeBuilder exchangeBuilder
     )
 {
     GameCore          = gameCore;
     CivDiscoveryCanon = civDiscoveryCanon;
     DiplomacyCore     = diplomacyCore;
     ExchangeBuilder   = exchangeBuilder;
 }
Пример #3
0
        public ExchangeBuilderTests()
        {
            testObjs = new TestObjects();
            var fileRepo = new FileRepository.FileRepository();
            //var apiInfo = fileRepo.GetDataFromFile<Cryptobitfolio.Business.Entities.Trade.ExchangeApi>("config.json");
            //var apiInfoList = new List<Cryptobitfolio.Business.Entities.Trade.ExchangeApi> { apiInfo };
            var exchangeApiRepoMock = new Mock <IExchangeApiRepository>();

            exchangeApiRepoMock.Setup(m => m.Get()).Returns(Task.FromResult(testObjs.GetEntityExchangeApis()));
            exchangeApiRepoMock.Setup(m => m.Get(It.IsAny <Expression <Func <Cryptobitfolio.Business.Entities.Trade.ExchangeApi, bool> > >()))
            .Returns(Task.FromResult(testObjs.GetEntityExchangeApis(Cryptobitfolio.Business.Entities.Exchange.Binance)));
            exchangeApiRepoMock.Setup(m => m.Delete(It.IsAny <Cryptobitfolio.Business.Entities.Trade.ExchangeApi>()))
            .Returns(Task.FromResult(true));
            exchangeApiRepoMock.Setup(m => m.Add(It.IsAny <Cryptobitfolio.Business.Entities.Trade.ExchangeApi>()))
            .Returns(Task.FromResult(testObjs.GetEntityExchangeApis().First()));
            exchangeApiRepoMock.Setup(m => m.Update(It.IsAny <Cryptobitfolio.Business.Entities.Trade.ExchangeApi>()))
            .Returns(Task.FromResult(testObjs.GetUpdatedExchangeApi()));
            var exchangeUpdateRepoMock = new Mock <IExchangeUpdateRepository>();
            var exchangeApiBldrMock    = new Mock <IExchangeApiBuilder>();
            var arbitrageRepoMock      = new Mock <IArbitragePathRepository>();
            var arbitrageBldrMock      = new Mock <IArbitrageBuilder>();
            var exchangeHubRepo        = new Mock <IExchangeHubRepository>();
            var cmcBldr = new Mock <ICMCBuilder>();

            exchangeHubRepo.Setup(m => m.GetBalances())
            .Returns(Task.FromResult(testObjs.GetExchangeHubBalances()));
            exchangeHubRepo.SetupSequence(m => m.GetOrders(It.IsAny <string>()))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOrders().Where(o => o.Pair.Equals("BTCUSDT"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOrders().Where(o => o.Pair.Equals("ETHUSDT"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOrders().Where(o => o.Pair.Equals("ETHBTC"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOrders().Where(o => o.Pair.Equals("XLMBTC"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOrders().Where(o => o.Pair.Equals("XLMETH"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOrders().Where(o => o.Pair.Equals("XLMUSDT"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOrders().Where(o => o.Pair.Equals("NANOBTC"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOrders().Where(o => o.Pair.Equals("NANOETH"))));
            exchangeHubRepo.Setup(m => m.GetExchange())
            .Returns(testObjs.GetExchangeHubExchange());
            exchangeHubRepo.Setup(m => m.GetMarkets())
            .Returns(Task.FromResult(testObjs.GetExchangeHubMarkets()));
            exchangeHubRepo.SetupSequence(m => m.GetOpenOrders(It.IsAny <string>()))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOpenOrders().Where(o => o.Pair.Equals("BTCUSDT"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOpenOrders().Where(o => o.Pair.Equals("ETHUSDT"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOpenOrders().Where(o => o.Pair.Equals("ETHBTC"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOpenOrders().Where(o => o.Pair.Equals("XLMBTC"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOpenOrders().Where(o => o.Pair.Equals("XLMETH"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOpenOrders().Where(o => o.Pair.Equals("XLMUSDT"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOpenOrders().Where(o => o.Pair.Equals("NANOBTC"))))
            .Returns(Task.FromResult(testObjs.GetExchangeHubOpenOrders().Where(o => o.Pair.Equals("NANOETH"))));
            exchangeApiBldrMock.Setup(m => m.Get())
            .Returns(Task.FromResult(testObjs.GetContractExchangeApis()));
            cmcBldr.Setup(m => m.GetCurrencies(It.IsAny <List <string> >()))
            .Returns(Task.FromResult(testObjs.GetCurrencies()));

            exchangeBuilder = new ExchangeBuilder(exchangeApiBldrMock.Object, exchangeUpdateRepoMock.Object, arbitrageRepoMock.Object, arbitrageBldrMock.Object, exchangeHubRepo.Object, cmcBldr.Object);
        }
        public void BuyCrypto_Success_Test()
        {
            // Arrange
            _gdaxRepo.Setup(g => g.GetTrades(It.IsAny <string>())).ReturnsAsync(_testObjects.GetGdaxTrades().ToArray());

            _xchBuilder = new ExchangeBuilder(_binanceRepo.Object, _gdaxRepo.Object, _kuRepo.Object);
            _xchBuilder.SetExchange(_testObjects.GetBotSettings());

            // Act
            var response = _xchBuilder.GetSticksFromGdaxTrades(_testObjects.GetGdaxTrades().ToArray(), 4);

            // Assert
            Assert.True(response != null);
        }
        public void PlaceTrade_GDAX_Test()
        {
            // Arrange
            var settings = _testObjects.GetBotSettings();

            settings.exchange = Exchange.GDAX;
            _gdaxRepo.Setup(g => g.PlaceTrade(It.IsAny <TradeParams>()))
            .ReturnsAsync(_testObjects.GetGDAXOrderResponse());
            _xchBuilder = new ExchangeBuilder(_binanceRepo.Object, _gdaxRepo.Object, _kuRepo.Object);
            _xchBuilder.SetExchange(settings);

            // Act
            var response = _xchBuilder.PlaceTrade(_testObjects.GetTradeParams());

            // Assert
            Assert.True(response != null);
        }
Пример #6
0
 public PortfolioViewModel(IExchangeBuilder exchangeBldr)
 {
     this._exchangeBldr = exchangeBldr;
 }