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); }