Exemplo n.º 1
0
        private FactoryType ExtractFactoryType(string factoryTypeName, Table table)
        {
            var inputResourceBuilder  = ImmutableDictionary.CreateBuilder <IResource, FactoryType.QuantityPeriod>();
            var outputResourceBuilder = ImmutableDictionary.CreateBuilder <IResource, FactoryType.QuantityPeriod>();

            foreach (var tableRow in table.Rows)
            {
                var resource = _state.GetResourceFromName(tableRow["resource"]);
                var quantity = int.Parse(tableRow["quantity"]);
                int periods  = int.Parse(tableRow["periods"]);

                var quantityPeriod = new FactoryType.QuantityPeriod(quantity, periods);

                bool isIn = bool.Parse(tableRow["In"]);
                if (isIn)
                {
                    inputResourceBuilder.Add(resource, quantityPeriod);
                }
                else
                {
                    outputResourceBuilder.Add(resource, quantityPeriod);
                }
            }

            var factoryType = new FactoryType(factoryTypeName,
                                              inputResourceBuilder.ToImmutable(),
                                              outputResourceBuilder.ToImmutable());

            return(factoryType);
        }
        public void WhenIPostToTheExchangeContractTheFollowingInvitation(string exchangeContractName, Table table)
        {
            var exchangeContractActor = _state.ExchangeContractActors[exchangeContractName];
            var exchangeType          = (OfferType)Enum.Parse(typeof(OfferType), table.GetField("ExchangeType"));

            var resourceName = table.GetField("SellResourceName");
            var sellResource = _state.GetResourceFromName(resourceName);

            var sellResourceQuantity   = int.Parse(table.GetField("SellResourceQuantity"));
            var sellResourceTimePeriod =
                (TimePeriodType)Enum.Parse(typeof(TimePeriodType), table.GetField("SellResourceTimePeriod"));
            var sellResourceTimePeriodQuantity = int.Parse(table.GetField("SellResourceTimePeriodQuantity"));

            var suggestedOfferResourceName = table.GetField("SuggestedOfferResourceName");
            var suggestedOfferResource     = _state.GetResourceFromName(suggestedOfferResourceName);
            var suggestedQuantity          = int.Parse(table.GetField("SuggestedOfferResourceQuantity"));

            var liabilityResourceName = table.GetField("LiabilityResourceName");
            var liabilityResource     = _state.GetResourceFromName(liabilityResourceName);
            var liabilityQuantity     = int.Parse(table.GetField("LiabilityResourceQuantity"));

            var owner         = table.GetField("ContractOwner");
            var contractOwner = owner == "testActor" ? _state.TestKit.TestActor : _state.Traders[owner];

            var postInvitationMessage = new ExchangeContract.PostInvitationMessage(
                exchangeType,
                sellResource,
                sellResourceQuantity,
                sellResourceTimePeriod,
                sellResourceTimePeriodQuantity,
                suggestedOfferResource,
                suggestedQuantity,
                liabilityResource,
                liabilityQuantity);

            exchangeContractActor.Tell(postInvitationMessage, contractOwner);
        }