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);
        }
Example #2
0
        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);
        }