protected override void Context() { _amountPerTimeDimension = A.Fake <IDimension>(); _concentrationPerTimeDimension = A.Fake <IDimension>(); A.CallTo(() => _amountPerTimeDimension.Name).Returns(Constants.Dimension.AMOUNT_PER_TIME); A.CallTo(() => _concentrationPerTimeDimension.Name).Returns(Constants.Dimension.MOLAR_CONCENTRATION_PER_TIME); _reactionPartnerMapper = A.Fake <IReactionPartnerBuilderToReactionPartnerMapper>(); _objectBaseFactory = A.Fake <IObjectBaseFactory>(); _formulaMapper = A.Fake <IFormulaBuilderToFormulaMapper>(); _parameterMapper = A.Fake <IParameterBuilderCollectionToParameterCollectionMapper>(); _dimensionFactory = A.Fake <IDimensionFactory>(); _modifier = "MOD"; _reactionBuilder = A.Fake <IReactionBuilder>().WithName("MyReaction"); _reactionBuilder.Dimension = _amountPerTimeDimension; _buildConfiguration = A.Fake <IBuildConfiguration>(); _reactionBuilder.Formula = A.Fake <IFormula>(); var edPartner1 = A.Fake <IReactionPartnerBuilder>(); var edPartner2 = A.Fake <IReactionPartnerBuilder>(); var prodPartner1 = A.Fake <IReactionPartnerBuilder>(); var prodPartner2 = A.Fake <IReactionPartnerBuilder>(); _educt1 = A.Fake <IReactionPartner>(); _prod1 = A.Fake <IReactionPartner>(); _educt2 = A.Fake <IReactionPartner>(); _prod2 = A.Fake <IReactionPartner>(); _container = A.Fake <IContainer>(); A.CallTo(() => _dimensionFactory.Dimension(Constants.Dimension.AMOUNT_PER_TIME)).Returns(_amountPerTimeDimension); A.CallTo(() => _reactionPartnerMapper.MapFromLocal(edPartner1, _container, _buildConfiguration)).Returns(_educt1); A.CallTo(() => _reactionPartnerMapper.MapFromLocal(edPartner2, _container, _buildConfiguration)).Returns(_educt2); A.CallTo(() => _reactionPartnerMapper.MapFromLocal(prodPartner1, _container, _buildConfiguration)).Returns(_prod1); A.CallTo(() => _reactionPartnerMapper.MapFromLocal(prodPartner2, _container, _buildConfiguration)).Returns(_prod2); A.CallTo(() => _formulaMapper.MapFrom(_reactionBuilder.Formula, _buildConfiguration)).Returns(_reactionBuilder.Formula); A.CallTo(() => _reactionBuilder.Educts).Returns(new[] { edPartner1, edPartner2 }); A.CallTo(() => _reactionBuilder.Products).Returns(new[] { prodPartner1, prodPartner2 }); A.CallTo(() => _reactionBuilder.Parameters).Returns(new IParameter[0]); A.CallTo(() => _reactionBuilder.ModifierNames).Returns(new[] { _modifier }); A.CallTo(() => _objectBaseFactory.Create <IReaction>()).Returns(new Reaction()); A.CallTo(() => _parameterMapper.MapFrom(_reactionBuilder.Parameters, _buildConfiguration, ParameterBuildMode.Local)).Returns(new List <IParameter>()); _processRateParameterCreator = new ProcessRateParameterCreator(_objectBaseFactory, _formulaMapper); sut = new ReactionBuilderToReactionMapper(_objectBaseFactory, _reactionPartnerMapper, _formulaMapper, _parameterMapper, _processRateParameterCreator); }
public IReaction MapFromLocal(IReactionBuilder reactionBuilder, IContainer container, IBuildConfiguration buildConfiguration) { var reaction = _objectBaseFactory.Create <IReaction>() .WithName(reactionBuilder.Name) .WithDescription(reactionBuilder.Description) .WithIcon(reactionBuilder.Icon) .WithDimension(reactionBuilder.Dimension) .WithFormula(createReactionKinetic(reactionBuilder, buildConfiguration)); reactionBuilder.Educts.Each(reactionPartnerBuilder => reaction.AddEduct(_reactionPartnerMapper.MapFromLocal(reactionPartnerBuilder, container, buildConfiguration))); reactionBuilder.Products.Each(reactionPartnerBuilder => reaction.AddProduct(_reactionPartnerMapper.MapFromLocal(reactionPartnerBuilder, container, buildConfiguration))); reactionBuilder.ModifierNames.Each(reaction.AddModifier); reaction.AddChildren(_parameterMapper.MapLocalFrom(reactionBuilder, buildConfiguration)); if (reactionBuilder.CreateProcessRateParameter) { reaction.Add(processRateParameterFor(reactionBuilder, buildConfiguration)); } buildConfiguration.AddBuilderReference(reaction, reactionBuilder); return(reaction); }