public void BuildResourceExchangesTests(ResourceExchangeBuilderTestData testData) { var resources = testData.Resources.Select(resourceData => BuildResource(resourceData)).ToList(); var sender = BuildCivilization(testData.Sender, resources); var receiver = BuildCivilization(testData.Receiver, resources); var summary = new ExchangeSummary(); MockConnectionLogic.Setup(logic => logic.AreCivilizationsConnected(sender, receiver)) .Returns(testData.AreCivilizationsConnected); MockConnectionLogic.Setup(logic => logic.AreCivilizationsConnected(receiver, sender)) .Returns(testData.AreCivilizationsConnected); var exchangeBuilder = Container.Resolve <ResourceExchangeBuilder>(); exchangeBuilder.BuildResourceExchanges(sender, receiver, summary); var senderResourceExchanges = summary.AllPossibleOffersFromSender.Select(exchange => exchange as ResourceDiplomaticExchange); CheckExchangesAgainstExpectations(resources, senderResourceExchanges, testData.Sender.ResourceSummaries); var receiverResourceExchanges = summary.AllPossibleDemandsOfReceiver.Select(exchange => exchange as ResourceDiplomaticExchange); CheckExchangesAgainstExpectations(resources, receiverResourceExchanges, testData.Receiver.ResourceSummaries); }
public ExchangeSummaryViewModel(ExchangeSummary exchangeSummary) { if (exchangeSummary == null) { return; } Name = exchangeSummary.Name; Coins = new RangeObservableCollection <CoinSummaryViewModel>(exchangeSummary.Coins.Select(coin => new CoinSummaryViewModel(coin))); }
private static ExchangeSummary GetExchange(List <ExchangeSummary> exchanges, Transaccion transaccion) { ExchangeSummary exchange = exchanges.FirstOrDefault(exchange => exchange.Name == transaccion.Exchange); if (exchange == null) { exchange = new ExchangeSummary(transaccion.Exchange); exchanges.Add(exchange); } return(exchange); }
public static ExchangeSummary[] GetSummary(Transaccion[] transacciones) { var exchanges = new List <ExchangeSummary>(); foreach (Transaccion transaccion in transacciones) { ExchangeSummary exchange = GetExchange(exchanges, transaccion); Calculate(exchange, transaccion); } return(exchanges.ToArray()); }
private static void Calculate(ExchangeSummary exchange, Transaccion transaccion) { if (!string.IsNullOrWhiteSpace(transaccion.Divisa_Compra)) { var coin = GetCoin(exchange.Coins, transaccion.Divisa_Compra); coin.Value += transaccion.Cantidad_Compra ?? 0; } if (!string.IsNullOrWhiteSpace(transaccion.Divisa_Venta)) { var coin = GetCoin(exchange.Coins, transaccion.Divisa_Venta); coin.Value -= transaccion.Cantidad_Venta ?? 0; } if (!string.IsNullOrWhiteSpace(transaccion.Divisa_Comision)) { var coin = GetCoin(exchange.Coins, transaccion.Divisa_Comision); coin.Value -= transaccion.Cantidad_Comision ?? 0; } }