예제 #1
0
        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)));
        }
예제 #3
0
        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);
        }
예제 #4
0
        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());
        }
예제 #5
0
        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;
            }
        }