public void VerifyThatSerializationofOperationsWorks()
        {
            this.serializer = new Cdp4JsonSerializer(this.metadataprovider, new Version(1, 1, 0));

            var postoperation = new TestPostOperation();

            this.engModel           = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri);
            this.book1              = new Book(Guid.NewGuid(), this.cache, this.uri);
            this.book2              = new Book(Guid.NewGuid(), this.cache, this.uri);
            this.section1           = new Section(Guid.NewGuid(), this.cache, this.uri);
            this.section1.ShortName = "SS1";

            this.engModel.Book.Add(this.book1);
            this.engModel.Book.Add(this.book2);
            this.book2.Section.Add(this.section1);

            var iteration             = new Iteration(Guid.NewGuid(), this.cache, this.uri);
            var ed                    = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri);
            var parameter             = new Parameter(Guid.NewGuid(), this.cache, this.uri);
            var parameterSubscription = new ParameterSubscription(Guid.NewGuid(), this.cache, this.uri);
            var valueset              = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri);
            var subscriptionValueset  = new ParameterSubscriptionValueSet(Guid.NewGuid(), this.cache, this.uri);
            var valuearrayvalues      = new[] { "123", "456", "789.0" };

            valueset.Manual    = new ValueArray <string>(valuearrayvalues);
            valueset.Reference = new ValueArray <string>(valuearrayvalues);
            valueset.Computed  = new ValueArray <string>(valuearrayvalues);
            valueset.Formula   = new ValueArray <string>(valuearrayvalues);
            valueset.Published = new ValueArray <string>(valuearrayvalues);

            subscriptionValueset.Manual             = new ValueArray <string>(valuearrayvalues);
            subscriptionValueset.SubscribedValueSet = valueset;

            this.engModel.Iteration.Add(iteration);
            iteration.Element.Add(ed);
            ed.Parameter.Add(parameter);
            parameter.ValueSet.Add(valueset);
            parameter.ParameterSubscription.Add(parameterSubscription);
            parameterSubscription.ValueSet.Add(subscriptionValueset);

            postoperation.Update.Add(ClasslessDtoFactory.FullFromThing(this.metadataprovider, subscriptionValueset.ToDto()));
            postoperation.Update.Add(ClasslessDtoFactory.FullFromThing(this.metadataprovider, parameterSubscription.ToDto()));
            postoperation.Create.Add(valueset.ToDto());
            postoperation.Delete.Add(ClasslessDtoFactory.FullFromThing(this.metadataprovider, ed.ToDto()));

            using (var memoryStream = new MemoryStream())
            {
                this.serializer.SerializeToStream(postoperation, memoryStream);

                // necessary
                memoryStream.Position = 0;

                var result = this.serializer.Deserialize <TestPostOperation>(memoryStream);
                Assert.AreEqual(1, result.Delete.Count);
                Assert.AreEqual(1, result.Create.Count);
                Assert.AreEqual(2, result.Update.Count);

                var subscriptionValueSetClasslessDto =
                    result.Update.Single(x => x["Iid"].ToString() == subscriptionValueset.Iid.ToString());

                var valueArray = (ValueArray <string>)subscriptionValueSetClasslessDto["Manual"];
                Assert.IsTrue(subscriptionValueSetClasslessDto["Iid"] is Guid);
                Assert.IsTrue(subscriptionValueSetClasslessDto["ClassKind"] is ClassKind);
                Assert.AreEqual(3, valueArray.Count());
                Assert.AreEqual("123", valueArray[0]);
                Assert.AreEqual("456", valueArray[1]);
                Assert.AreEqual("789.0", valueArray[2]);
            }
        }
示例#2
0
        /// <summary>
        /// Asserts whether the <see cref="ParameterValueSet"/> that is represented by the current <see cref="ProcessedValueSet"/> is Dirty or not
        /// </summary>
        /// <param name="original">
        /// The <see cref="ParameterValueSet"/> whose values are being compared to assert the dirtyness
        /// </param>
        /// <param name="componentIndex">
        /// The index of the component of the <see cref="CompoundParameterType"/>
        /// </param>
        /// <param name="parameterType">
        /// The <see cref="ParameterType"/> that is referenced by the container <see cref="Parameter"/>
        /// </param>
        /// <param name="switchKind">
        /// The <see cref="ParameterSwitchKind"/> that is read from the Parameter sheet
        /// </param>
        /// <param name="manualValue">
        /// The manual value that is read from the Parameter sheet
        /// </param>
        /// <param name="computedValue">
        /// The computed value that is read from the Parameter sheet
        /// </param>
        /// <param name="referenceValue">
        /// The reference value that is read from the Parameter sheet
        /// </param>
        /// <param name="formulaValue">
        /// The formula value that is read from the Parameter sheet
        /// </param>
        /// <param name="valueSetValues">
        /// The <see cref="ValueSetValues"/> that is created and returned as an out when the return value is true.
        /// </param>
        /// <returns>
        /// True when the values in the Parameter sheet are different from the values of the the <see cref="ParameterValueSet"/> that is being represented by the current <see cref="ProcessedValueSet"/>
        /// </returns>
        private bool IsDirty(ParameterValueSet original, int componentIndex, ParameterType parameterType, ParameterSwitchKind switchKind, object manualValue, object computedValue, object referenceValue, string formulaValue, out ValueSetValues valueSetValues)
        {
            // here we use CultureInfo.InvariantCulture, these are values that are not shown to the user
            // but serve the purpose to update the data-source.
            var stringManualValue    = manualValue.ToValueSetString(parameterType);
            var stringComputedValue  = computedValue.ToValueSetString(parameterType);
            var stringReferenceValue = referenceValue.ToValueSetString(parameterType);

            bool isManualValueDirty;

            try
            {
                isManualValueDirty = original.Manual[componentIndex] != stringManualValue;
            }
            catch (ArgumentOutOfRangeException)
            {
                isManualValueDirty = true;
                logger.Debug("The ParameterValueSet.Manual ValueArray has an incorrect number of slots {0}", original.Iid);
            }
            catch (Exception exception)
            {
                throw exception;
            }

            bool isFormualValueDirty;

            try
            {
                isFormualValueDirty = original.Formula[componentIndex] != formulaValue;
            }
            catch (ArgumentOutOfRangeException)
            {
                isFormualValueDirty = true;
                logger.Debug("The ParameterValueSet.Formula ValueArray has an incorrect number of slots {0}", original.Iid);
            }
            catch (Exception exception)
            {
                throw exception;
            }

            bool isComputedValueDirty;

            try
            {
                isComputedValueDirty = original.Computed[componentIndex] != stringComputedValue;
            }
            catch (ArgumentOutOfRangeException)
            {
                isComputedValueDirty = true;
                logger.Debug("The ParameterValueSet.Computed ValueArray has an incorrect number of slots {0}", original.Iid);
            }
            catch (Exception exception)
            {
                throw exception;
            }

            bool isReferenceValueDirty;

            try
            {
                isReferenceValueDirty = original.Reference[componentIndex] != stringReferenceValue;
            }
            catch (ArgumentOutOfRangeException)
            {
                isReferenceValueDirty = true;
                logger.Debug("The ParameterValueSet.Reference ValueArray has an incorrect number of slots {0}", original.Iid);
            }
            catch (Exception exception)
            {
                throw exception;
            }

            var isSwitchKindDirty = original.ValueSwitch != switchKind;

            if (isManualValueDirty || isFormualValueDirty || isComputedValueDirty || isReferenceValueDirty || isSwitchKindDirty)
            {
                valueSetValues = new ValueSetValues(componentIndex, parameterType, switchKind, stringManualValue, stringComputedValue, stringReferenceValue, formulaValue);
                return(true);
            }

            valueSetValues = null;
            return(false);
        }
示例#3
0
        internal override ResolvedTraitSet FetchResolvedTraits(ResolveOptions resOpt = null)
        {
            if (resOpt == null)
            {
                resOpt = new ResolveOptions(this, this.Ctx.Corpus.DefaultResolutionDirectives);
            }

            const string   kind = "rtsb";
            ResolveContext ctx  = this.Ctx as ResolveContext;
            // this may happen 0, 1 or 2 times. so make it fast
            CdmTraitDefinition baseTrait  = null;
            ResolvedTraitSet   baseRts    = null;
            List <dynamic>     baseValues = null;

            System.Action GetBaseInfo = () =>
            {
                if (this.ExtendsTrait != null)
                {
                    baseTrait = this.ExtendsTrait.FetchObjectDefinition <CdmTraitDefinition>(resOpt);
                    if (baseTrait != null)
                    {
                        baseRts = this.ExtendsTrait.FetchResolvedTraits(resOpt);
                        if (baseRts?.Size == 1)
                        {
                            ParameterValueSet basePv = baseRts.Get(baseTrait)?.ParameterValues;
                            if (basePv != null)
                            {
                                baseValues = basePv.Values;
                            }
                        }
                    }
                }
            };

            // see if one is already cached
            // if this trait has parameters, then the base trait found through the reference might be a different reference
            // because trait references are unique per argument value set. so use the base as a part of the cache tag
            // since it is expensive to figure out the extra tag, cache that too!
            if (this.BaseIsKnownToHaveParameters == null)
            {
                GetBaseInfo();
                // is a cache tag needed? then make one
                this.BaseIsKnownToHaveParameters = false;
                if (baseValues?.Count > 0)
                {
                    this.BaseIsKnownToHaveParameters = true;
                }
            }
            string cacheTagExtra = "";

            if (this.BaseIsKnownToHaveParameters == true)
            {
                cacheTagExtra = this.ExtendsTrait.Id.ToString();
            }

            string  cacheTag         = ctx.Corpus.CreateDefinitionCacheTag(resOpt, this, kind, cacheTagExtra);
            dynamic rtsResultDynamic = null;

            if (cacheTag != null)
            {
                ctx.Cache.TryGetValue(cacheTag, out rtsResultDynamic);
            }
            ResolvedTraitSet rtsResult = rtsResultDynamic as ResolvedTraitSet;

            // store the previous reference symbol set, we will need to add it with
            // children found from the constructResolvedTraits call
            SymbolSet currSymbolRefSet = resOpt.SymbolRefSet;

            if (currSymbolRefSet == null)
            {
                currSymbolRefSet = new SymbolSet();
            }
            resOpt.SymbolRefSet = new SymbolSet();

            // if not, then make one and save it
            if (rtsResult == null)
            {
                GetBaseInfo();
                if (baseTrait != null)
                {
                    // get the resolution of the base class and use the values as a starting point for this trait's values
                    if (!this.HasSetFlags)
                    {
                        // inherit these flags
                        if (this.Elevated == null)
                        {
                            this.Elevated = baseTrait.Elevated;
                        }
                        if (this.Ugly == null)
                        {
                            this.Ugly = baseTrait.Ugly;
                        }
                        if (this.AssociatedProperties == null)
                        {
                            this.AssociatedProperties = baseTrait.AssociatedProperties;
                        }
                    }
                }
                this.HasSetFlags = true;
                ParameterCollection pc     = this.FetchAllParameters(resOpt);
                List <dynamic>      av     = new List <dynamic>();
                List <bool>         wasSet = new List <bool>();
                this.ThisIsKnownToHaveParameters = pc.Sequence.Count > 0;
                for (int i = 0; i < pc.Sequence.Count; i++)
                {
                    // either use the default value or (higher precidence) the value taken from the base reference
                    dynamic value     = (pc.Sequence[i] as CdmParameterDefinition).DefaultValue;
                    dynamic baseValue = null;
                    if (baseValues != null && i < baseValues.Count)
                    {
                        baseValue = baseValues[i];
                        if (baseValue != null)
                        {
                            value = baseValue;
                        }
                    }
                    av.Add(value);
                    wasSet.Add(false);
                }

                // save it
                ResolvedTrait resTrait = new ResolvedTrait(this, pc, av, wasSet);
                rtsResult = new ResolvedTraitSet(resOpt);
                rtsResult.Merge(resTrait, false);

                // register set of possible symbols
                ctx.Corpus.RegisterDefinitionReferenceSymbols(this.FetchObjectDefinition <CdmObjectDefinitionBase>(resOpt), kind, resOpt.SymbolRefSet);
                // get the new cache tag now that we have the list of docs
                cacheTag = ctx.Corpus.CreateDefinitionCacheTag(resOpt, this, kind, cacheTagExtra);
                if (!string.IsNullOrWhiteSpace(cacheTag))
                {
                    ctx.Cache[cacheTag] = rtsResult;
                }
            }
            else
            {
                // cache found
                // get the SymbolSet for this cached object
                string key = CdmCorpusDefinition.CreateCacheKeyFromObject(this, kind);
                ((CdmCorpusDefinition)ctx.Corpus).DefinitionReferenceSymbols.TryGetValue(key, out SymbolSet tempSymbolRefSet);
                resOpt.SymbolRefSet = tempSymbolRefSet;
            }
            // merge child document set with current
            currSymbolRefSet.Merge(resOpt.SymbolRefSet);
            resOpt.SymbolRefSet = currSymbolRefSet;

            return(rtsResult);
        }
        public void SetUp()
        {
            this.CleanupExistingFiles();

            RxApp.MainThreadScheduler = Scheduler.CurrentThread;

            this.session = new Mock <ISession>();
            this.thingDialogNavigationService        = new Mock <IThingDialogNavigationService>();
            this.panelNavigationService              = new Mock <IPanelNavigationService>();
            this.dialogNavigationService             = new Mock <IDialogNavigationService>();
            this.pluginSettingsService               = new Mock <IPluginSettingsService>();
            this.openSaveFileDialogService           = new Mock <IOpenSaveFileDialogService>();
            this.submittableParameterValuesCollector = new Mock <ISubmittableParameterValuesCollector>();
            this.permissionService   = new Mock <IPermissionService>();
            this.dynamicTableChecker = new Mock <IDynamicTableChecker>();
            this.messageBoxService   = new Mock <IMessageBoxService>();

            this.serviceLocator = new Mock <IServiceLocator>();
            ServiceLocator.SetLocatorProvider(() => this.serviceLocator.Object);

            this.serviceLocator.Setup(x => x.GetInstance <IOpenSaveFileDialogService>()).Returns(this.openSaveFileDialogService.Object);
            this.serviceLocator.Setup(x => x.GetInstance <ISubmittableParameterValuesCollector>()).Returns(this.submittableParameterValuesCollector.Object);
            this.serviceLocator.Setup(x => x.GetInstance <IDynamicTableChecker>()).Returns(this.dynamicTableChecker.Object);
            this.serviceLocator.Setup(x => x.GetInstance <IMessageBoxService>()).Returns(this.messageBoxService.Object);

            this.assembler = new Assembler(this.uri);
            this.cache     = this.assembler.Cache;

            this.sitedir    = new SiteDirectory(Guid.NewGuid(), this.cache, this.uri);
            this.modelsetup = new EngineeringModelSetup(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "model"
            };
            this.iterationsetup = new IterationSetup(Guid.NewGuid(), this.cache, this.uri);
            this.person         = new Person(Guid.NewGuid(), this.cache, this.uri);

            this.participant = new Participant(Guid.NewGuid(), this.cache, this.uri)
            {
                Person = this.person, SelectedDomain = domainOfExpertise
            };

            this.sitedir.Model.Add(this.modelsetup);
            this.sitedir.Person.Add(this.person);
            this.sitedir.Domain.Add(domainOfExpertise);
            this.sitedir.Domain.Add(domainOfExpertise_2);
            this.sitedir.Domain.Add(domainOfExpertise_3);
            this.modelsetup.IterationSetup.Add(this.iterationsetup);
            this.modelsetup.Participant.Add(this.participant);

            this.model = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri)
            {
                EngineeringModelSetup = this.modelsetup
            };
            this.iteration = new Iteration(Guid.NewGuid(), this.cache, this.uri)
            {
                IterationSetup = this.iterationsetup
            };
            this.model.Iteration.Add(this.iteration);

            this.elementDefinition_1 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "Sat",
                Name      = "Satellite"
            };

            this.elementDefinition_2 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "Bat",
                Name      = "Battery"
            };

            this.elementUsage_1 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                ElementDefinition = this.elementDefinition_2,
                ShortName         = "bat_a",
                Name = "battery a"
            };

            this.elementUsage_2 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                ElementDefinition = this.elementDefinition_2,
                ShortName         = "bat_b",
                Name = "battery b"
            };

            var simpleQuantityKind = new SimpleQuantityKind(Guid.NewGuid(), null, null)
            {
                ShortName = "m"
            };

            var simpleQuantityKind2 = new SimpleQuantityKind(Guid.NewGuid(), null, null)
            {
                ShortName = "v"
            };

            var ratioScale = new RatioScale(Guid.NewGuid(), null, null);

            simpleQuantityKind.PossibleScale.Add(ratioScale);
            simpleQuantityKind.DefaultScale = ratioScale;

            simpleQuantityKind2.PossibleScale.Add(ratioScale);
            simpleQuantityKind2.DefaultScale = ratioScale;

            var actualList = new ActualFiniteStateList(Guid.NewGuid(), null, null);

            actualList.Owner = domainOfExpertise;

            var possibleList1 = new PossibleFiniteStateList(Guid.NewGuid(), null, null);

            var possibleState1 = new PossibleFiniteState(Guid.NewGuid(), null, null)
            {
                Name = "possiblestate1", ShortName = "1"
            };
            var possibleState2 = new PossibleFiniteState(Guid.NewGuid(), null, null)
            {
                Name = "possiblestate2", ShortName = "2"
            };

            possibleList1.PossibleState.Add(possibleState1);
            possibleList1.PossibleState.Add(possibleState2);

            actualList.PossibleFiniteStateList.Add(possibleList1);

            this.actualState_3 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);

            this.actualState_3.PossibleState.Add(possibleState1);

            this.actualState_4 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);

            this.actualState_4.PossibleState.Add(possibleState2);

            this.parameter = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner             = domainOfExpertise,
                ParameterType     = simpleQuantityKind,
                IsOptionDependent = true,
                Scale             = ratioScale
            };

            var parameterSubscription = new ParameterSubscription(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner = domainOfExpertise_3
            };

            this.parameter.ParameterSubscription.Add(parameterSubscription);

            this.parameter2 = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner           = domainOfExpertise_2,
                ParameterType   = simpleQuantityKind2,
                StateDependence = actualList,
                Scale           = ratioScale
            };

            this.parameterOverride = new ParameterOverride(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner     = domainOfExpertise,
                Parameter = this.parameter
            };

            var parameterValueset_1 = new ParameterValueSet
            {
                ActualOption = option_B,
                Iid          = Guid.NewGuid()
            };

            var parameterValueset_2 = new ParameterValueSet
            {
                ActualOption = option_A,
                Iid          = Guid.NewGuid()
            };

            var parameterValueset_3 = new ParameterValueSet
            {
                ActualState = this.actualState_3,
                Iid         = Guid.NewGuid()
            };

            var parameterValueset_4 = new ParameterValueSet
            {
                ActualState = this.actualState_4,
                Iid         = Guid.NewGuid()
            };

            var parameterSubscriptionValueSetA = new ParameterSubscriptionValueSet
            {
                Iid = Guid.NewGuid()
            };

            var parameterSubscriptionValueSetB = new ParameterSubscriptionValueSet
            {
                Iid = Guid.NewGuid()
            };

            var values_1 = new List <string> {
                "2"
            };
            var values_2 = new List <string> {
                "3"
            };
            var values_3 = new List <string> {
                "220"
            };
            var emptyValues = new List <string> {
                "-"
            };
            var publishedValues = new List <string> {
                "123"
            };
            var subscriptionValues = new List <string> {
                "456"
            };

            var overrideValueset = new ParameterOverrideValueSet()
            {
                ParameterValueSet = parameterValueset_1,
                Iid = Guid.NewGuid()
            };

            this.iteration.Option.Add(option_A);
            this.iteration.Option.Add(option_B);
            this.iteration.DefaultOption = option_A;

            parameterValueset_1.Manual      = new ValueArray <string>(values_1);
            parameterValueset_1.Reference   = new ValueArray <string>(values_1);
            parameterValueset_1.Computed    = new ValueArray <string>(values_1);
            parameterValueset_1.Formula     = new ValueArray <string>(values_1);
            parameterValueset_1.Published   = new ValueArray <string>(publishedValues);
            parameterValueset_1.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterValueset_2.Manual      = new ValueArray <string>(values_2);
            parameterValueset_2.Reference   = new ValueArray <string>(values_2);
            parameterValueset_2.Computed    = new ValueArray <string>(values_2);
            parameterValueset_2.Formula     = new ValueArray <string>(values_2);
            parameterValueset_2.Published   = new ValueArray <string>(publishedValues);
            parameterValueset_2.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterValueset_3.Manual      = new ValueArray <string>(values_3);
            parameterValueset_3.Reference   = new ValueArray <string>(values_3);
            parameterValueset_3.Computed    = new ValueArray <string>(values_3);
            parameterValueset_3.Formula     = new ValueArray <string>(values_3);
            parameterValueset_3.Published   = new ValueArray <string>(emptyValues);
            parameterValueset_3.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterValueset_4.Manual      = new ValueArray <string>(emptyValues);
            parameterValueset_4.Reference   = new ValueArray <string>(emptyValues);
            parameterValueset_4.Computed    = new ValueArray <string>(emptyValues);
            parameterValueset_4.Formula     = new ValueArray <string>(emptyValues);
            parameterValueset_4.Published   = new ValueArray <string>(publishedValues);
            parameterValueset_4.ValueSwitch = ParameterSwitchKind.MANUAL;

            overrideValueset.Manual      = new ValueArray <string>(values_1);
            overrideValueset.Reference   = new ValueArray <string>(values_1);
            overrideValueset.Computed    = new ValueArray <string>(values_1);
            overrideValueset.Formula     = new ValueArray <string>(values_1);
            overrideValueset.Published   = new ValueArray <string>(publishedValues);
            overrideValueset.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterSubscriptionValueSetA.Manual             = new ValueArray <string>(subscriptionValues);
            parameterSubscriptionValueSetA.ValueSwitch        = ParameterSwitchKind.MANUAL;
            parameterSubscriptionValueSetA.SubscribedValueSet = parameterValueset_1;

            parameterSubscriptionValueSetB.Manual             = new ValueArray <string>(subscriptionValues);
            parameterSubscriptionValueSetB.ValueSwitch        = ParameterSwitchKind.COMPUTED;
            parameterSubscriptionValueSetB.SubscribedValueSet = parameterValueset_2;

            this.parameter.ValueSet.Add(parameterValueset_1);
            this.parameter.ValueSet.Add(parameterValueset_2);

            this.parameterOverride.ValueSet.Add(overrideValueset);

            this.parameter2.ValueSet.Add(parameterValueset_3);
            this.parameter2.ValueSet.Add(parameterValueset_4);

            parameterSubscription.ValueSet.Add(parameterSubscriptionValueSetA);
            parameterSubscription.ValueSet.Add(parameterSubscriptionValueSetB);

            this.elementUsage_1.ExcludeOption.Add(option_A);
            this.elementUsage_1.ParameterOverride.Add(this.parameterOverride);

            this.elementDefinition_1.Parameter.Add(this.parameter);
            this.elementDefinition_1.ContainedElement.Add(this.elementUsage_1);
            this.elementDefinition_1.ContainedElement.Add(this.elementUsage_2);

            this.elementDefinition_2.Parameter.Add(this.parameter);
            this.elementDefinition_2.Parameter.Add(this.parameter2);

            this.iteration.Element.Add(this.elementDefinition_1);
            this.iteration.Element.Add(this.elementDefinition_2);
            this.iteration.TopElement = this.elementDefinition_1;

            this.iteration.ActualFiniteStateList.Add(actualList);
            this.iteration.PossibleFiniteStateList.Add(possibleList1);
            actualList.ActualState.Add(this.actualState_3);
            actualList.ActualState.Add(this.actualState_4);

            this.session.Setup(x => x.RetrieveSiteDirectory()).Returns(this.sitedir);
            this.session.Setup(x => x.ActivePerson).Returns(this.person);
            this.session.Setup(x => x.DataSourceUri).Returns(this.uri.ToString);
            this.session.Setup(x => x.Assembler).Returns(this.assembler);
            this.session.Setup(x => x.IsVersionSupported(It.IsAny <Version>())).Returns(true);
            this.session.Setup(x => x.OpenIterations).Returns(new Dictionary <Iteration, Tuple <DomainOfExpertise, Participant> >());
            this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object);

            this.cache.TryAdd(new CacheKey(this.iteration.Iid, null), new Lazy <Thing>(() => this.iteration));

            this.reportDesignerViewModel = new ReportDesignerViewModel(this.iteration, this.session.Object, this.thingDialogNavigationService.Object, this.panelNavigationService.Object, this.dialogNavigationService.Object, this.pluginSettingsService.Object);
        }
        public void VerifyCreateParameterOverride()
        {
            var vm             = new ProductTreeViewModel(this.option, this.session.Object, this.thingDialogNavigationService.Object, this.panelNavigationService.Object, this.dialogNavigationService.Object, null);
            var revisionNumber = typeof(Iteration).GetProperty("RevisionNumber");

            revisionNumber.SetValue(this.iteration, 50);
            var elementdef = new ElementDefinition(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                Container = this.iteration
            };
            var boolParamType = new BooleanParameterType(Guid.NewGuid(), this.assembler.Cache, this.uri);

            var elementUsage = new ElementUsage(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                Container         = elementdef,
                ElementDefinition = elementdef
            };

            var parameter = new Parameter(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                Owner = this.domain, Container = elementUsage, ParameterType = boolParamType
            };

            elementdef.Parameter.Add(parameter);
            var published = new ValueArray <string>(new List <string> {
                "published"
            });

            var paramValueSet = new ParameterValueSet(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                Published   = published,
                Manual      = published,
                Computed    = published,
                ValueSwitch = ParameterSwitchKind.COMPUTED
            };

            parameter.ValueSet.Add(paramValueSet);

            var usageRow     = new ElementUsageRowViewModel(elementUsage, this.option, this.session.Object, null);
            var parameterRow = new ParameterRowViewModel(parameter, this.option, this.session.Object, usageRow);

            this.iteration.TopElement = elementdef;
            vm.SelectedThing          = parameterRow;

            Assert.IsTrue(vm.CreateOverrideCommand.CanExecute(null));

            vm.SelectedThing = null;
            vm.CreateOverrideCommand.Execute(null);
            this.session.Verify(x => x.Write(It.IsAny <OperationContainer>()), Times.Never);

            vm.SelectedThing = vm.TopElement.Single();
            vm.CreateOverrideCommand.Execute(null);
            this.session.Verify(x => x.Write(It.IsAny <OperationContainer>()), Times.Never);

            vm.SelectedThing = parameterRow;
            vm.CreateOverrideCommand.Execute(parameter);
            this.session.Verify(x => x.Write(It.IsAny <OperationContainer>()));

            vm.PopulateContextMenu();
            Assert.AreEqual(7, vm.ContextMenu.Count);
        }
        public void SetUp()
        {
            this.cache = new ConcurrentDictionary <CacheKey, Lazy <Thing> >();

            this.siteDirectory         = new SiteDirectory(Guid.NewGuid(), this.cache, this.uri);
            this.engineeringModelSetup = new EngineeringModelSetup(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "TST", Name = "Test"
            };
            this.iterationSetup = new IterationSetup(Guid.NewGuid(), this.cache, this.uri)
            {
                IterationNumber = 1, Description = "iteraiton 1"
            };
            this.engineeringModelSetup.IterationSetup.Add(this.iterationSetup);
            this.siteDirectory.Model.Add(this.engineeringModelSetup);
            this.person = new Person(Guid.NewGuid(), this.cache, this.uri)
            {
                GivenName = "John", Surname = "Doe"
            };
            this.domain = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "domain"
            };
            this.participant = new Participant(Guid.NewGuid(), this.cache, this.uri)
            {
                Person = this.person, SelectedDomain = this.domain
            };
            this.engineeringModel = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri)
            {
                EngineeringModelSetup = this.engineeringModelSetup
            };
            this.iteration = new Iteration(Guid.NewGuid(), this.cache, this.uri)
            {
                IterationSetup = this.iterationSetup
            };
            this.engineeringModel.Iteration.Add(this.iteration);
            this.modelReferenceDataLibrary = new ModelReferenceDataLibrary(Guid.NewGuid(), this.cache, this.uri);
            this.siteReferenceDataLibrary  = new SiteReferenceDataLibrary(Guid.NewGuid(), this.cache, this.uri);
            this.engineeringModelSetup.RequiredRdl.Add(this.modelReferenceDataLibrary);
            this.modelReferenceDataLibrary.RequiredRdl = this.siteReferenceDataLibrary;
            this.siteDirectory.SiteReferenceDataLibrary.Add(this.siteReferenceDataLibrary);

            this.session           = new Mock <ISession>();
            this.permissionService = new Mock <IPermissionService>();

            this.session.Setup(x => x.RetrieveSiteDirectory()).Returns(this.siteDirectory);
            this.session.Setup(x => x.ActivePerson).Returns(this.person);
            this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object);
            this.session.Setup(x => x.QuerySelectedDomainOfExpertise(this.iteration)).Returns(this.domain);

            // PossibleElementDefinitionCategory
            this.elementDefinitionCategory_1 = new Category(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "Batteries",
                ShortName = "BAT"
            };

            this.elementDefinitionCategory_1.PermissibleClass.Add(ClassKind.ElementDefinition);
            this.siteReferenceDataLibrary.DefinedCategory.Add(this.elementDefinitionCategory_1);

            this.elementDefinitionCategory_2 = new Category(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "Reaction Wheels",
                ShortName = "RW"
            };

            this.elementDefinitionCategory_2.PermissibleClass.Add(ClassKind.ElementDefinition);
            this.siteReferenceDataLibrary.DefinedCategory.Add(this.elementDefinitionCategory_2);

            // PossibleActualFiniteStateList
            this.possibleFiniteStateList = new PossibleFiniteStateList(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "System Modes",
                ShortName = "SM",
                Owner     = this.domain
            };

            this.possibleFiniteState_on = new PossibleFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "On",
                ShortName = "On"
            };

            this.possibleFiniteStateList.PossibleState.Add(this.possibleFiniteState_on);

            this.possibleFiniteState_off = new PossibleFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "Off",
                ShortName = "Off"
            };

            this.possibleFiniteStateList.PossibleState.Add(this.possibleFiniteState_off);

            this.possibleFiniteState_standby = new PossibleFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "stand by",
                ShortName = "stby"
            };

            this.possibleFiniteStateList.PossibleState.Add(this.possibleFiniteState_standby);
            this.iteration.PossibleFiniteStateList.Add(this.possibleFiniteStateList);

            this.actualFiniteStateList = new ActualFiniteStateList(Guid.NewGuid(), this.cache, this.uri);
            this.actualFiniteStateList.PossibleFiniteStateList.Add(this.possibleFiniteStateList);
            this.actualFinitateSte_on = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);
            this.actualFiniteStateList.ActualState.Add(this.actualFinitateSte_on);
            this.actualFinitateSte_on.PossibleState.Add(this.possibleFiniteState_on);
            this.actualFinitateSte_off = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);
            this.actualFiniteStateList.ActualState.Add(this.actualFinitateSte_off);
            this.actualFinitateSte_off.PossibleState.Add(this.possibleFiniteState_off);
            this.actualFinitateSte_standby = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);
            this.actualFiniteStateList.ActualState.Add(this.actualFinitateSte_standby);
            this.actualFinitateSte_standby.PossibleState.Add(this.possibleFiniteState_standby);
            this.iteration.ActualFiniteStateList.Add(this.actualFiniteStateList);

            this.sourceParameterType_1 = new SimpleQuantityKind(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "QuantityKind",
                ShortName = "QK"
            };

            this.sourceParameterTypes_1 =
                new List <ParameterType>
            {
                this.sourceParameterType_1
            };

            // PossibleTargetMappingParameterType
            this.mappingParameterType_1 = new TextParameterType(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "Mapping 1",
                ShortName = "map1"
            };

            this.siteReferenceDataLibrary.ParameterType.Add(this.mappingParameterType_1);

            this.mappingParameterType_2 = new TextParameterType(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "Mapping 2",
                ShortName = "map2"
            };

            this.siteReferenceDataLibrary.ParameterType.Add(this.mappingParameterType_2);

            // PossibleTargetValueParameterType
            this.valueParameterType_1 = new SimpleQuantityKind(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "Power Consumption",
                ShortName = "PWC"
            };

            this.siteReferenceDataLibrary.ParameterType.Add(this.valueParameterType_1);

            this.simpleQuantityKind_2 = new SimpleQuantityKind(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "Duty Cycle",
                ShortName = "DC"
            };

            this.siteReferenceDataLibrary.ParameterType.Add(this.simpleQuantityKind_2);

            // ElementDefinitions
            this.rootElementDefinition = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "Satellite",
                ShortName = "SAT"
            };

            this.iteration.Element.Add(this.rootElementDefinition);

            this.elementDefinition_1 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "reaction wheel",
                ShortName = "RW"
            };

            var sourceParameterValueset1 = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Reference = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "100"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Published = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL
            };

            var sourceParameter_1 = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = this.sourceParameterType_1,
                Owner         = this.domain,
                ValueSet      = { sourceParameterValueset1 }
            };

            var mappingParameterValueset1 = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Reference = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Published = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL
            };

            var mappingParameter_1 = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = this.mappingParameterType_1,
                Owner         = this.domain,
                ValueSet      = { mappingParameterValueset1 }
            };

            var valueParameterValueset1_1 = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Reference = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Published = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL,
                ActualState = this.actualFinitateSte_on
            };

            var valueParameterValueset1_2 = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Reference = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Published = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL,
                ActualState = this.actualFinitateSte_off
            };

            var valueParameterValueset1_3 = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Reference = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Published = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL,
                ActualState = this.actualFinitateSte_standby
            };

            var valueParameter_1 = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType   = this.valueParameterType_1,
                Owner           = this.domain,
                StateDependence = this.actualFiniteStateList,
                ValueSet        = { valueParameterValueset1_1, valueParameterValueset1_2, valueParameterValueset1_3 }
            };

            this.elementDefinition_1.Parameter.Add(sourceParameter_1);
            this.elementDefinition_1.Parameter.Add(mappingParameter_1);
            this.elementDefinition_1.Parameter.Add(valueParameter_1);

            this.elementDefinition_1.Category.Add(this.elementDefinitionCategory_2);
            this.iteration.Element.Add(this.elementDefinition_1);

            //ElementUsages
            this.elementUsage_1 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                Name              = "reaction wheel 1",
                ShortName         = "RW_1",
                ElementDefinition = this.elementDefinition_1
            };

            var sourceParameterOverrideValueset1 = new ParameterOverrideValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Reference = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "100"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Published = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL
            };

            var sourceParameterOverride_1 = new ParameterOverride(Guid.NewGuid(), this.cache, this.uri)
            {
                Parameter = sourceParameter_1,
                ValueSet  = { sourceParameterOverrideValueset1 }
            };

            this.parameterToStateMapping_1 = new ParameterToStateMapping("100", this.sourceParameterType_1, this.actualFinitateSte_on, "");
            this.parameterToStateMapping_2 = new ParameterToStateMapping("100", this.sourceParameterType_1, this.actualFinitateSte_off, "");

            this.parameterToStateMappingList = new[] { this.parameterToStateMapping_1, this.parameterToStateMapping_2 };

            var mappingParameterOverrideValueset1 = new ParameterOverrideValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Reference = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    JsonConvert.SerializeObject(this.parameterToStateMappingList)
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Published = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL
            };

            var mappingParameterOverride_1 = new ParameterOverride(Guid.NewGuid(), this.cache, this.uri)
            {
                Parameter = mappingParameter_1,
                ValueSet  = { mappingParameterOverrideValueset1 }
            };

            var valueParameterOverrideValueset1_1 = new ParameterOverrideValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Reference = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "100"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Published = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch       = ParameterSwitchKind.MANUAL,
                ParameterValueSet = valueParameterValueset1_1
            };

            var valueParameterOverrideValueset1_2 = new ParameterOverrideValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Reference = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "150"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Published = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch       = ParameterSwitchKind.MANUAL,
                ParameterValueSet = valueParameterValueset1_2
            };

            var valueParameterOverrideValueset1_3 = new ParameterOverrideValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Reference = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Published = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch       = ParameterSwitchKind.MANUAL,
                ParameterValueSet = valueParameterValueset1_3
            };

            var valueParameterOverride_1 = new ParameterOverride(Guid.NewGuid(), this.cache, this.uri)
            {
                Parameter = valueParameter_1,
                ValueSet  = { valueParameterOverrideValueset1_1, valueParameterOverrideValueset1_2, valueParameterOverrideValueset1_3 }
            };

            this.elementUsage_1.ParameterOverride.Add(sourceParameterOverride_1);
            this.elementUsage_1.ParameterOverride.Add(mappingParameterOverride_1);
            this.elementUsage_1.ParameterOverride.Add(valueParameterOverride_1);

            this.rootElementDefinition.ContainedElement.Add(this.elementUsage_1);

            this.elementUsage_2 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                Name              = "reaction wheel 2",
                ShortName         = "RW_2",
                ElementDefinition = this.elementDefinition_1
            };

            this.rootElementDefinition.ContainedElement.Add(this.elementUsage_2);

            this.elementUsage_3 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                Name              = "reaction wheel 3",
                ShortName         = "RW_3",
                ElementDefinition = this.elementDefinition_1
            };

            this.rootElementDefinition.ContainedElement.Add(this.elementUsage_3);
        }
        public void VerifyThatNestedParameterExcelRowPropertiesAreSetForCompoundParameter()
        {
            var compoundParameterType = new CompoundParameterType(Guid.NewGuid(), this.cache, this.uri)
            {
                Name      = "coordinate",
                ShortName = "coord"
            };

            var component_1 = new ParameterTypeComponent(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = this.length,
                Scale         = this.meter,
                ShortName     = "x"
            };

            compoundParameterType.Component.Add(component_1);

            var component_2 = new ParameterTypeComponent(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = this.text,
                ShortName     = "txt"
            };

            compoundParameterType.Component.Add(component_2);

            var parameter = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = compoundParameterType,
                Owner         = this.systemEngineering
            };

            var parameterValueSet = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "A", "A1"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "B", "B1"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "C", "C1"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL
            };

            parameter.ValueSet.Add(parameterValueSet);
            this.satellite.Parameter.Add(parameter);

            var nestedElementTreeGenerator = new NestedElementTreeGenerator();
            var nestedElements             = nestedElementTreeGenerator.Generate(this.option, this.systemEngineering);

            var rootnode          = nestedElements.Single(ne => ne.ShortName == "SAT");
            var nestedparameter_1 = rootnode.NestedParameter.Single(x => x.Component == component_1);

            var excelRow_1 = new NestedParameterExcelRow(nestedparameter_1);

            Assert.AreEqual("=SAT.coord.x", excelRow_1.ActualValue);
            Assert.AreEqual("SAT\\coord.x\\option1\\", excelRow_1.ModelCode);
            Assert.AreEqual("coordinate", excelRow_1.Name);
            Assert.AreEqual("SYS", excelRow_1.Owner);
            Assert.AreEqual("coord.x [m]", excelRow_1.ParameterTypeShortName);
            Assert.AreEqual("NP", excelRow_1.Type);

            var nestedparameter_2 = rootnode.NestedParameter.Single(x => x.Component == component_2);

            var excelRow_2 = new NestedParameterExcelRow(nestedparameter_2);

            Assert.AreEqual("=SAT.coord.txt", excelRow_2.ActualValue);
            Assert.AreEqual("SAT\\coord.txt\\option1\\", excelRow_2.ModelCode);
            Assert.AreEqual("coordinate", excelRow_2.Name);
            Assert.AreEqual("SYS", excelRow_2.Owner);
            Assert.AreEqual("coord.txt", excelRow_2.ParameterTypeShortName);
            Assert.AreEqual("NP", excelRow_2.Type);
        }
示例#8
0
        public void Verify_that_when_container_not_set_QueryParameterType_throws_Exception()
        {
            var parameterValueSet = new ParameterValueSet(Guid.NewGuid(), null, null);

            Assert.Throws <ContainmentException>(() => parameterValueSet.QueryParameterType());
        }
        /// <summary>
        /// Create a new <see cref="ParameterOverrideValueSet"/> given a source <see cref="ParameterOverrideValueSet"/>
        /// </summary>
        /// <param name="sourceValueSet">The source <see cref="ParameterOverrideValueSet"/></param>
        /// <param name="parameterValueSet">The associated <see cref="ParameterValueSet"/></param>
        /// <returns>The new <see cref="ParameterOverrideValueSet"/></returns>
        public ParameterOverrideValueSet CreateWithOldValues(ParameterOverrideValueSet sourceValueSet, ParameterValueSet parameterValueSet)
        {
            if (sourceValueSet == null)
            {
                return(this.CreateParameterOverrideValueSet(parameterValueSet));
            }

            var parameterOverrideValueSet = new ParameterOverrideValueSet(Guid.NewGuid(), -1)
            {
                ParameterValueSet = parameterValueSet.Iid,
                Manual            = sourceValueSet.Manual,
                Computed          = sourceValueSet.Computed,
                Reference         = sourceValueSet.Reference,
                Formula           = sourceValueSet.Formula,
                Published         = sourceValueSet.Published,
                ValueSwitch       = sourceValueSet.ValueSwitch
            };

            return(parameterOverrideValueSet);
        }
        public void Setup()
        {
            this.permissionService            = new Mock <IPermissionService>();
            this.panelNavigationService       = new Mock <IPanelNavigationService>();
            this.thingDialogNavigationService = new Mock <IThingDialogNavigationService>();
            this.session = new Mock <ISession>();

            this.serviceLocator = new Mock <IServiceLocator>();
            this.thingCreator   = new Mock <IThingCreator>();

            ServiceLocator.SetLocatorProvider(() => this.serviceLocator.Object);

            this.serviceLocator.Setup(x => x.GetInstance <IThingCreator>())
            .Returns(this.thingCreator.Object);

            this.nestedElementTreeService = new Mock <INestedElementTreeService>();
            this.nestedElementTreeService.Setup(x => x.GetNestedElementPath(It.IsAny <ElementUsage>(), It.IsAny <Option>())).Returns(this.nestedElementPath);

            this.serviceLocator.Setup(x => x.GetInstance <INestedElementTreeService>()).Returns(this.nestedElementTreeService.Object);

            this.domain = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "domain", ShortName = "dom"
            };
            this.siteDir        = new SiteDirectory(Guid.NewGuid(), this.cache, this.uri);
            this.person         = new Person(Guid.NewGuid(), this.cache, this.uri);
            this.model          = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri);
            this.modelSetup     = new EngineeringModelSetup(Guid.NewGuid(), this.cache, this.uri);
            this.iteration      = new Iteration(Guid.NewGuid(), this.cache, this.uri);
            this.iterationSetup = new IterationSetup(Guid.NewGuid(), this.cache, this.uri);
            this.participant    = new Participant(Guid.NewGuid(), this.cache, this.uri);
            this.option         = new Option(Guid.NewGuid(), this.cache, this.uri);

            this.category1 = new Category(Guid.NewGuid(), this.cache, this.uri);
            this.category2 = new Category(Guid.NewGuid(), this.cache, this.uri);

            this.elementDef = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner = this.domain
            };
            this.elementDef3 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner = this.domain
            };

            this.elementDef2 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner = this.domain, Name = "Element definition 1", ShortName = "ED1"
            };

            this.elementDef4 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner = this.domain, Name = "Element definition 4", ShortName = "ED4"
            };
            this.elementDef4.Category.Add(this.category1);

            this.elementDef5 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner = this.domain, Name = "Element definition 5", ShortName = "ED5"
            };

            this.elementUsage = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                ElementDefinition = this.elementDef2, Owner = this.domain, Name = "Element usage 1", ShortName = "EU1"
            };

            this.elementUsage4 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                ElementDefinition = this.elementDef4, Container = this.elementDef4, Owner = this.domain, Name = "Element usage 4", ShortName = "EU4"
            };

            this.elementUsage4.Category.Add(this.category2);

            this.elementUsage5 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                ElementDefinition = this.elementDef5, Container = this.elementDef5, Owner = this.domain, Name = "Element usage 5", ShortName = "EU5"
            };

            this.elementDef5.Category.Add(this.category1);

            this.elementUsage6 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                ElementDefinition = this.elementDef4, Container = this.elementDef5, Owner = this.domain, Name = "Element usage 6", ShortName = "EU6"
            };

            this.valueSet           = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri);
            this.valueSet.Published = new ValueArray <string>(new List <string> {
                "1"
            });
            this.valueSet.Manual = new ValueArray <string>(new List <string> {
                "1"
            });
            this.valueSet.ValueSwitch = ParameterSwitchKind.MANUAL;

            this.valueSetOverride           = new ParameterOverrideValueSet(Guid.NewGuid(), this.cache, this.uri);
            this.valueSetOverride.Published = new ValueArray <string>(new List <string> {
                "1"
            });
            this.valueSetOverride.Manual = new ValueArray <string>(new List <string> {
                "1"
            });
            this.valueSetOverride.ValueSwitch = ParameterSwitchKind.MANUAL;

            this.siteDir.Person.Add(this.person);
            this.siteDir.Model.Add(this.modelSetup);
            this.modelSetup.IterationSetup.Add(this.iterationSetup);
            this.modelSetup.Participant.Add(this.participant);
            this.participant.Person = this.person;

            this.model.Iteration.Add(this.iteration);
            this.model.EngineeringModelSetup = this.modelSetup;
            this.iteration.IterationSetup    = this.iterationSetup;
            this.iteration.Option.Add(this.option);
            this.iteration.TopElement = this.elementDef;
            this.iteration.Element.Add(this.elementDef);
            this.iteration.Element.Add(this.elementDef3);
            this.iteration.Element.Add(this.elementDef2);
            this.elementDef.ContainedElement.Add(this.elementUsage);

            this.session.Setup(x => x.ActivePerson).Returns(this.person);
            this.session.Setup(x => x.DataSourceUri).Returns(this.uri.ToString);
            this.session.Setup(x => x.OpenIterations).Returns(new Dictionary <Iteration, Tuple <DomainOfExpertise, Participant> >());
            this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object);
            this.session.Setup(x => x.QuerySelectedDomainOfExpertise(this.iteration)).Returns(this.domain);
        }
示例#11
0
        public void Verify_that_when_container_not_set_ModelCode_throws_exception()
        {
            var parameterValueSet = new ParameterValueSet(Guid.NewGuid(), null, null);

            Assert.Throws <ContainmentException>(() => parameterValueSet.ModelCode(0));
        }
示例#12
0
        public void Setup()
        {
            this.session                      = new Mock <ISession>();
            this.assembler                    = new Assembler(this.uri);
            this.permissionService            = new Mock <IPermissionService>();
            this.thingDialogNavigationService = new Mock <IThingDialogNavigationService>();
            this.panelNavigationService       = new Mock <IPanelNavigationService>();
            this.cache = this.assembler.Cache;
            this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object);
            this.session.Setup(x => x.Assembler).Returns(this.assembler);

            this.sitedir    = new SiteDirectory(Guid.NewGuid(), this.cache, this.uri);
            this.modelsetup = new EngineeringModelSetup(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "model"
            };
            this.iterationsetup = new IterationSetup(Guid.NewGuid(), this.cache, this.uri);
            this.person         = new Person(Guid.NewGuid(), this.cache, this.uri);
            this.domain         = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "domain", ShortName = "DMN"
            };
            this.otherDomain = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "otherDomain", ShortName = "ODMN"
            };
            this.participant = new Participant(Guid.NewGuid(), this.cache, this.uri)
            {
                Person = this.person, SelectedDomain = this.domain
            };

            this.modelsetup.ActiveDomain = new List <DomainOfExpertise>()
            {
                this.domain, this.otherDomain
            };

            this.elementDefinition = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri);

            this.sitedir.Model.Add(this.modelsetup);
            this.sitedir.Person.Add(this.person);
            this.sitedir.Domain.Add(this.domain);
            this.sitedir.Domain.Add(this.otherDomain);
            this.modelsetup.IterationSetup.Add(this.iterationsetup);
            this.modelsetup.Participant.Add(this.participant);

            this.model = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri)
            {
                EngineeringModelSetup = this.modelsetup
            };
            this.iteration = new Iteration(Guid.NewGuid(), this.cache, this.uri)
            {
                IterationSetup = this.iterationsetup
            };
            this.iteration.Element.Add(this.elementDefinition);
            this.publication = new Publication(Guid.NewGuid(), this.cache, this.uri);

            this.parameter1 = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = new SimpleQuantityKind(Guid.NewGuid(), this.cache, this.uri)
                {
                    Name = "paramtype1", ShortName = "pat1"
                }, Owner = this.domain
            };
            this.parameter2 = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = new SimpleQuantityKind(Guid.NewGuid(), this.cache, this.uri)
                {
                    Name = "paramtype2", ShortName = "pat2"
                }, Owner = this.domain
            };
            this.parameter3 = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = new SimpleQuantityKind(Guid.NewGuid(), this.cache, this.uri)
                {
                    Name = "paramtypeadd", ShortName = "padd"
                }, Owner = this.domain
            };

            var parameterforoverride = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = new SimpleQuantityKind(Guid.NewGuid(), this.cache, this.uri)
                {
                    Name = "paramtype3", ShortName = "pat3"
                }
            };

            // Test input
            var valueSet = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri);

            this.SetScalarValueSet(valueSet);
            parameterforoverride.ValueSet.Add(valueSet);

            this.parameter1.ValueSet.Add(valueSet.Clone(false));
            this.parameter3.ValueSet.Add(valueSet.Clone(false));

            this.parameterOverride1 = new ParameterOverride(Guid.NewGuid(), this.cache, this.uri)
            {
                Parameter = parameterforoverride
            };

            this.elementDefinition.Parameter.Add(this.parameter1);
            this.elementDefinition.Parameter.Add(this.parameter2);
            this.elementDefinition.Parameter.Add(this.parameter3);
            this.elementDefinition.Parameter.Add(parameterforoverride);

            var elementusage = new ElementUsage(Guid.NewGuid(), this.cache, this.uri);

            this.elementDefinition.ContainedElement.Add(elementusage);
            elementusage.ParameterOverride.Add(this.parameterOverride1);

            this.publication.PublishedParameter.Add(this.parameter1);
            this.publication.PublishedParameter.Add(this.parameter2);
            this.publication.PublishedParameter.Add(this.parameter3);
            this.publication.PublishedParameter.Add(this.parameterOverride1);

            this.publication.CreatedOn = DateTime.Now;
            this.publication.Domain.Add(this.domain);

            this.model.Iteration.Add(this.iteration);
            this.iteration.Publication.Add(this.publication);

            this.session.Setup(x => x.RetrieveSiteDirectory()).Returns(this.sitedir);
            this.session.Setup(x => x.ActivePerson).Returns(this.person);
            this.session.Setup(x => x.Write(It.IsAny <OperationContainer>())).Returns(Task.FromResult("some result"));
            this.session.Setup(x => x.OpenIterations).Returns(new Dictionary <Iteration, Tuple <DomainOfExpertise, Participant> >());

            this.cache.TryAdd(new CacheKey(this.iteration.Iid, null), new Lazy <Thing>(() => this.iteration));
        }
        public void SetUp()
        {
            this.nestedElementTreeGenerator = new NestedElementTreeGenerator();

            this.uri   = new Uri("http://www.rheagroup.com");
            this.cache = new ConcurrentDictionary <CDP4Common.Types.CacheKey, Lazy <Thing> >();

            this.domainOfExpertise = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "SYS",
                Name      = "System"
            };

            this.domainOfExpertise_2 = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "TEST",
                Name      = "Test"
            };

            this.iteration = new Iteration(Guid.NewGuid(), this.cache, this.uri);

            this.option_A = new Option(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "OPT_A",
                Name      = "Option A"
            };

            this.option_B = new Option(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "OPT_B",
                Name      = "Option B"
            };

            this.elementDefinition_1 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "Sat",
                Name      = "Satellite"
            };

            this.elementDefinition_2 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "Bat",
                Name      = "Battery"
            };

            this.elementUsage_1 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                ElementDefinition = this.elementDefinition_2,
                ShortName         = "bat_a",
                Name = "battery a"
            };

            this.elementUsage_2 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                ElementDefinition = this.elementDefinition_2,
                ShortName         = "bat_b",
                Name = "battery b"
            };

            var simpleQuantityKind = new SimpleQuantityKind(Guid.NewGuid(), null, null)
            {
                ShortName = "m"
            };

            var simpleQuantityKind2 = new SimpleQuantityKind(Guid.NewGuid(), null, null)
            {
                ShortName = "v"
            };

            this.parameter = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner         = this.domainOfExpertise,
                ParameterType = simpleQuantityKind
            };

            this.parameter2 = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner         = this.domainOfExpertise_2,
                ParameterType = simpleQuantityKind2
            };

            this.parameterOverride = new ParameterOverride(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner     = this.domainOfExpertise,
                Parameter = this.parameter
            };

            var parameterValueset_1 = new ParameterValueSet()
            {
                ActualOption = this.option_B,
                Iid          = Guid.NewGuid()
            };

            var parameterValueset_2 = new ParameterValueSet()
            {
                ActualOption = this.option_A,
                Iid          = Guid.NewGuid()
            };

            var actualList = new ActualFiniteStateList(Guid.NewGuid(), null, null);

            actualList.Owner = this.domainOfExpertise;

            var possibleList1 = new PossibleFiniteStateList(Guid.NewGuid(), null, null);

            var possibleState1 = new PossibleFiniteState(Guid.NewGuid(), null, null)
            {
                Name = "possiblestate1", ShortName = "1"
            };
            var possibleState2 = new PossibleFiniteState(Guid.NewGuid(), null, null)
            {
                Name = "possiblestate2", ShortName = "2"
            };

            possibleList1.PossibleState.Add(possibleState1);
            possibleList1.PossibleState.Add(possibleState2);

            actualList.PossibleFiniteStateList.Add(possibleList1);

            this.actualState_3 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);

            this.actualState_3.PossibleState.Add(possibleState1);

            this.actualState_4 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);

            this.actualState_4.PossibleState.Add(possibleState2);

            var parameterValueset_3 = new ParameterValueSet()
            {
                ActualState = this.actualState_3,
                Iid         = Guid.NewGuid()
            };

            var parameterValueset_4 = new ParameterValueSet()
            {
                ActualState = this.actualState_4,
                Iid         = Guid.NewGuid()
            };

            var values_1 = new List <string> {
                "2"
            };
            var values_2 = new List <string> {
                "3"
            };
            var values_3 = new List <string> {
                "220"
            };
            var values_4 = new List <string> {
                "0"
            };

            var overrideValueset = new ParameterOverrideValueSet()
            {
                ParameterValueSet = parameterValueset_1,
                Iid = Guid.NewGuid()
            };

            this.iteration.Option.Add(this.option_A);
            this.iteration.Option.Add(this.option_B);
            this.iteration.DefaultOption = this.option_A;

            parameterValueset_1.Manual      = new CDP4Common.Types.ValueArray <string>(values_1);
            parameterValueset_1.Reference   = new CDP4Common.Types.ValueArray <string>(values_1);
            parameterValueset_1.Computed    = new CDP4Common.Types.ValueArray <string>(values_1);
            parameterValueset_1.Formula     = new CDP4Common.Types.ValueArray <string>(values_1);
            parameterValueset_1.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterValueset_2.Manual      = new CDP4Common.Types.ValueArray <string>(values_2);
            parameterValueset_2.Reference   = new CDP4Common.Types.ValueArray <string>(values_2);
            parameterValueset_2.Computed    = new CDP4Common.Types.ValueArray <string>(values_2);
            parameterValueset_2.Formula     = new CDP4Common.Types.ValueArray <string>(values_2);
            parameterValueset_2.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterValueset_3.Manual      = new CDP4Common.Types.ValueArray <string>(values_3);
            parameterValueset_3.Reference   = new CDP4Common.Types.ValueArray <string>(values_3);
            parameterValueset_3.Computed    = new CDP4Common.Types.ValueArray <string>(values_3);
            parameterValueset_3.Formula     = new CDP4Common.Types.ValueArray <string>(values_3);
            parameterValueset_3.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterValueset_4.Manual      = new CDP4Common.Types.ValueArray <string>(values_4);
            parameterValueset_4.Reference   = new CDP4Common.Types.ValueArray <string>(values_4);
            parameterValueset_4.Computed    = new CDP4Common.Types.ValueArray <string>(values_4);
            parameterValueset_4.Formula     = new CDP4Common.Types.ValueArray <string>(values_4);
            parameterValueset_4.ValueSwitch = ParameterSwitchKind.MANUAL;

            overrideValueset.Manual      = new CDP4Common.Types.ValueArray <string>(values_1);
            overrideValueset.Reference   = new CDP4Common.Types.ValueArray <string>(values_1);
            overrideValueset.Computed    = new CDP4Common.Types.ValueArray <string>(values_1);
            overrideValueset.Formula     = new CDP4Common.Types.ValueArray <string>(values_1);
            overrideValueset.ValueSwitch = ParameterSwitchKind.MANUAL;

            this.parameter.ValueSet.Add(parameterValueset_1);
            this.parameter.ValueSet.Add(parameterValueset_2);
            this.parameterOverride.ValueSet.Add(overrideValueset);

            this.parameter2.ValueSet.Add(parameterValueset_3);
            this.parameter2.ValueSet.Add(parameterValueset_4);

            this.elementUsage_1.ExcludeOption.Add(this.option_A);
            this.elementUsage_1.ParameterOverride.Add(this.parameterOverride);

            this.elementDefinition_1.Parameter.Add(this.parameter);
            this.elementDefinition_1.ContainedElement.Add(this.elementUsage_1);
            this.elementDefinition_1.ContainedElement.Add(this.elementUsage_2);
            this.elementDefinition_2.Parameter.Add(this.parameter);
            this.elementDefinition_2.Parameter.Add(this.parameter2);

            this.iteration.Element.Add(this.elementDefinition_1);
            this.iteration.Element.Add(this.elementDefinition_2);
            this.iteration.TopElement = this.elementDefinition_1;

            this.iteration.ActualFiniteStateList.Add(actualList);
            this.iteration.PossibleFiniteStateList.Add(possibleList1);
            actualList.ActualState.Add(this.actualState_3);
            actualList.ActualState.Add(this.actualState_4);
        }
        public void Setup()
        {
            this.uri = new Uri("http://www.rheagroup.com");
            this.thingDialogNavigationService = new Mock <IThingDialogNavigationService>();
            this.session           = new Mock <ISession>();
            this.permissionService = new Mock <IPermissionService>();
            this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object);
            this.cache = new ConcurrentDictionary <CacheKey, Lazy <Thing> >();

            var testDomain    = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri);
            var subscription  = new ParameterSubscription(Guid.NewGuid(), this.cache, this.uri);
            var anotherDomain = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "Other Domain"
            };

            subscription.Owner = anotherDomain;
            var paramValueSet = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri);

            paramValueSet.Computed    = new ValueArray <string>(new[] { "c" });
            paramValueSet.Manual      = new ValueArray <string>(new[] { "m" });
            paramValueSet.Reference   = new ValueArray <string>(new[] { "r" });
            paramValueSet.ValueSwitch = ParameterSwitchKind.COMPUTED;

            var testParamType = new SimpleQuantityKind(Guid.NewGuid(), this.cache, this.uri);

            this.parameter = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner = testDomain, ParameterType = testParamType
            };
            this.parameter.ParameterSubscription.Add(subscription);
            this.parameter.ValueSet.Add(paramValueSet);
            var elementDefinition = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri);

            elementDefinition.Parameter.Add(this.parameter);
            this.iteration = new Iteration(Guid.NewGuid(), this.cache, this.uri);
            this.option1   = new Option(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "opt1", ShortName = "o1"
            };
            this.option2 = new Option(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "opt2", ShortName = "o2"
            };
            this.iteration.Option.Add(this.option1);
            this.iteration.Option.Add(this.option2);
            this.iteration.Element.Add(elementDefinition);

            this.psl = new PossibleFiniteStateList(Guid.NewGuid(), this.cache, this.uri);
            this.ps1 = new PossibleFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "1", ShortName = "1"
            };
            this.ps2 = new PossibleFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "2", ShortName = "2"
            };
            this.psl.PossibleState.Add(this.ps1);
            this.psl.PossibleState.Add(this.ps2);

            this.asl = new ActualFiniteStateList(Guid.NewGuid(), this.cache, this.uri);
            this.as1 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);
            this.as1.PossibleState.Add(this.ps1);
            this.as2 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);
            this.as2.PossibleState.Add(this.ps2);

            this.asl.PossibleFiniteStateList.Add(this.psl);

            this.asl.ActualState.Add(this.as1);
            this.asl.ActualState.Add(this.as2);
            this.iteration.ActualFiniteStateList.Add(this.asl);
            this.iteration.PossibleFiniteStateList.Add(this.psl);

            var modelSetup = new EngineeringModelSetup(Guid.NewGuid(), this.cache, this.uri);

            modelSetup.ActiveDomain.Add(testDomain);
            modelSetup.ActiveDomain.Add(anotherDomain);
            var testPerson      = new Person(Guid.NewGuid(), null, null);
            var testParticipant = new Participant(Guid.NewGuid(), null, null)
            {
                Person = testPerson, SelectedDomain = testDomain
            };

            modelSetup.Participant.Add(testParticipant);
            this.model = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri)
            {
                EngineeringModelSetup = modelSetup
            };
            this.sitedir = new SiteDirectory(Guid.NewGuid(), this.cache, this.uri);
            this.srdl    = new SiteReferenceDataLibrary(Guid.NewGuid(), this.cache, this.uri);
            var ratioScale = new RatioScale(Guid.NewGuid(), this.cache, this.uri);

            this.srdl.Scale.Add(ratioScale);
            testParamType.PossibleScale.Add(ratioScale);
            this.srdl.ParameterType.Add(testParamType);
            var mrdl = new ModelReferenceDataLibrary(Guid.NewGuid(), this.cache, this.uri)
            {
                RequiredRdl = this.srdl
            };

            this.model.EngineeringModelSetup.RequiredRdl.Add(mrdl);
            this.sitedir.SiteReferenceDataLibrary.Add(this.srdl);

            this.model.Iteration.Add(this.iteration);
            this.session.Setup(x => x.RetrieveSiteDirectory()).Returns(this.sitedir);
            this.session.Setup(x => x.ActivePerson).Returns(testPerson);

            this.cache.TryAdd(new CacheKey(this.iteration.Iid, null), new Lazy <Thing>(() => this.iteration));

            this.elementDefinitionClone = elementDefinition.Clone(false);

            var transactionContext = TransactionContextResolver.ResolveContext(this.iteration);

            this.thingTransaction = new ThingTransaction(transactionContext, this.elementDefinitionClone);

            this.integerScale = new RatioScale(Guid.NewGuid(), this.cache, this.uri)
            {
                NumberSet = NumberSetKind.INTEGER_NUMBER_SET,
                MaximumPermissibleValue = "5",
                MinimumPermissibleValue = "0"
            };

            this.realScale = new RatioScale(Guid.NewGuid(), this.cache, this.uri)
            {
                MaximumPermissibleValue = "50",
                MinimumPermissibleValue = "0",
                NumberSet = NumberSetKind.REAL_NUMBER_SET
            };

            this.simpleQt = new SimpleQuantityKind(Guid.NewGuid(), this.cache, this.uri);
            this.simpleQt.PossibleScale.Add(this.integerScale);
            this.simpleQt.PossibleScale.Add(this.realScale);

            this.cptPt = new CompoundParameterType(Guid.NewGuid(), this.cache, this.uri);
            this.c1    = new ParameterTypeComponent(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = this.simpleQt, Scale = this.integerScale
            };
            this.cptPt.Component.Add(this.c1);

            this.srdl.Scale.Add(this.integerScale);
            this.srdl.Scale.Add(this.realScale);

            this.srdl.ParameterType.Add(this.cptPt);
            this.srdl.ParameterType.Add(this.simpleQt);

            var dal = new Mock <IDal>();

            this.session.Setup(x => x.DalVersion).Returns(new Version(1, 1, 0));
            this.session.Setup(x => x.Dal).Returns(dal.Object);
            dal.Setup(x => x.MetaDataProvider).Returns(new MetaDataProvider());
        }
示例#15
0
        public void Setup()
        {
            this.uri = new Uri("http://www.rheagroup.com");
            this.thingDialogNavigationService = new Mock <IThingDialogNavigationService>();
            this.session           = new Mock <ISession>();
            this.permissionService = new Mock <IPermissionService>();
            this.cache             = new ConcurrentDictionary <CacheKey, Lazy <Thing> >();
            this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object);
            var testDomain   = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri);
            var subscription = new ParameterSubscription(Guid.NewGuid(), this.cache, this.uri);

            subscription.Owner = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "Other Domain"
            };
            var paramValueSet = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri);

            paramValueSet.Computed    = new ValueArray <string>(new[] { "c" });
            paramValueSet.Manual      = new ValueArray <string>(new[] { "m" });
            paramValueSet.Reference   = new ValueArray <string>(new[] { "r" });
            paramValueSet.ValueSwitch = ParameterSwitchKind.COMPUTED;

            var paramSubscriptionValueSet = new ParameterSubscriptionValueSet(Guid.NewGuid(), this.cache, this.uri);

            paramSubscriptionValueSet.Manual             = new ValueArray <string>(new[] { "m1" });
            paramSubscriptionValueSet.ValueSwitch        = ParameterSwitchKind.REFERENCE;
            paramSubscriptionValueSet.SubscribedValueSet = paramValueSet;

            var testParamType = new SimpleQuantityKind(Guid.NewGuid(), this.cache, this.uri);

            this.parameter = new Parameter {
                Owner = testDomain, ParameterType = testParamType
            };
            this.parameter.ValueSet.Add(paramValueSet);
            var elementDefinition = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri);

            elementDefinition.Parameter.Add(this.parameter);
            this.iteration = new Iteration(Guid.NewGuid(), this.cache, this.uri);
            var option1 = new Option(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "opt1"
            };
            var option2 = new Option(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "opt2"
            };

            this.iteration.Option.Add(option1);
            this.iteration.Option.Add(option2);
            this.iteration.Element.Add(elementDefinition);
            var actualFiniteStateList = new ActualFiniteStateList(Guid.NewGuid(), this.cache, this.uri);

            actualFiniteStateList.ActualState.Add(new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri));
            actualFiniteStateList.ActualState.Add(new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri));
            this.iteration.ActualFiniteStateList.Add(actualFiniteStateList);
            var modelSetup = new EngineeringModelSetup(Guid.NewGuid(), this.cache, this.uri);

            modelSetup.ActiveDomain.Add(testDomain);
            this.model = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri)
            {
                EngineeringModelSetup = modelSetup
            };
            this.sitedir = new SiteDirectory(Guid.NewGuid(), this.cache, this.uri);
            this.srdl    = new SiteReferenceDataLibrary(Guid.NewGuid(), this.cache, this.uri);
            this.srdl.Scale.Add(new RatioScale(Guid.NewGuid(), this.cache, this.uri));
            this.srdl.ParameterType.Add(testParamType);
            var mrdl = new ModelReferenceDataLibrary(Guid.NewGuid(), this.cache, this.uri)
            {
                RequiredRdl = this.srdl
            };

            this.model.EngineeringModelSetup.RequiredRdl.Add(mrdl);
            this.sitedir.SiteReferenceDataLibrary.Add(this.srdl);
            var testPerson      = new Person(Guid.NewGuid(), null, null);
            var testParticipant = new Participant(Guid.NewGuid(), null, null)
            {
                Person = testPerson, SelectedDomain = testDomain
            };

            modelSetup.Participant.Add(testParticipant);
            this.parameterSubscription = new ParameterSubscription(Guid.NewGuid(), this.cache, this.uri)
            {
                Container = this.parameter
            };
            this.parameterSubscription.ValueSet.Add(paramSubscriptionValueSet);
            var elementUsage = new ElementUsage(Guid.NewGuid(), this.cache, this.uri);

            elementDefinition.ContainedElement.Add(elementUsage);
            elementUsage.ElementDefinition = elementDefinition;
            this.model.Iteration.Add(this.iteration);
            this.session.Setup(x => x.RetrieveSiteDirectory()).Returns(this.sitedir);
            this.session.Setup(x => x.ActivePerson).Returns(testPerson);
            this.cache.TryAdd(new CacheKey(this.iteration.Iid, null), new Lazy <Thing>(() => this.iteration));
            this.parameterSubscription.Owner = subscription.Owner;

            var pt = new TextParameterType();

            this.parameter.ParameterType = pt;
            this.parameter.ParameterSubscription.Add(this.parameterSubscription);

            this.parameterClone = this.parameter.Clone(false);

            var transactionContext = TransactionContextResolver.ResolveContext(this.iteration);

            this.thingTransaction = new ThingTransaction(transactionContext, this.parameterClone);

            var dal = new Mock <IDal>();

            this.session.Setup(x => x.DalVersion).Returns(new Version(1, 1, 0));
            this.session.Setup(x => x.Dal).Returns(dal.Object);
            dal.Setup(x => x.MetaDataProvider).Returns(new MetaDataProvider());
        }
        /// <summary>
        /// Creates a new <see cref="ParameterValueSet"/> where all the values are equal to a <see cref="ValueArray{String}"/> where each slot is a "-"
        /// and the <see cref="CDP4Common.EngineeringModelData.ParameterSwitchKind"/> is set to <see cref="CDP4Common.EngineeringModelData.ParameterSwitchKind.MANUAL"/>
        /// </summary>
        /// <param name="optionIid">
        /// The unique Id of the <see cref="Option"/> that is referenced by the <see cref="ParameterValueSet"/>
        /// </param>
        /// <param name="actualStateIid">
        /// The unique Id of the <see cref="ActualFiniteState"/> that is referenced by the <see cref="ParameterValueSet"/>
        /// </param>
        /// <param name="sourceValueSet">
        /// The source <see cref="ParameterValueSet"/> that the new <see cref="ParameterValueSet"/> will be created from
        /// </param>
        /// <param name="valueArray">
        /// A <see cref="ValueArray{String}"/> where each slot is a "-"
        /// </param>
        /// <returns>
        /// A instance of <see cref="ParameterValueSet"/>
        /// </returns>
        public ParameterValueSet CreateNewParameterValueSetFromSource(Guid?optionIid, Guid?actualStateIid, ParameterValueSet sourceValueSet, ValueArray <string> valueArray)
        {
            if (valueArray.Any(value => value != "-"))
            {
                throw new ArgumentException("The valueArray must be a default valueArray that only contains \"-\"", "valueArray");
            }

            var parameterValueSet = new ParameterValueSet(Guid.NewGuid(), -1)
            {
                ActualOption = optionIid,
                ActualState  = actualStateIid,
                Manual       = sourceValueSet != null ? sourceValueSet.Manual : valueArray,
                Computed     = sourceValueSet != null ? sourceValueSet.Computed : valueArray,
                Reference    = sourceValueSet != null ? sourceValueSet.Reference : valueArray,
                Formula      = sourceValueSet != null ? sourceValueSet.Formula : valueArray,
                Published    = sourceValueSet != null ? sourceValueSet.Published : valueArray,
                ValueSwitch  = sourceValueSet != null ? sourceValueSet.ValueSwitch : CDP4Common.EngineeringModelData.ParameterSwitchKind.MANUAL
            };

            return(parameterValueSet);
        }
示例#17
0
        public void VerifyThatPArameterBaseElementAreHandledCorrectly()
        {
            var revision = typeof(Thing).GetProperty("RevisionNumber");

            // Test input
            var valueSet         = new ParameterValueSet(Guid.NewGuid(), this.assembler.Cache, this.uri);
            var valueSetOverride = new ParameterOverrideValueSet(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                ParameterValueSet = valueSet
            };

            var manualSet = new ValueArray <string>(new List <string> {
                "manual"
            });
            var referenceSet = new ValueArray <string>(new List <string> {
                "ref"
            });
            var computedSet = new ValueArray <string>(new List <string> {
                "computed"
            });
            var publishedSet = new ValueArray <string>(new List <string> {
                "published"
            });

            valueSet.Manual    = manualSet;
            valueSet.Reference = referenceSet;
            valueSet.Computed  = computedSet;
            valueSet.Published = publishedSet;

            valueSetOverride.Manual    = manualSet;
            valueSetOverride.Reference = referenceSet;
            valueSetOverride.Computed  = computedSet;
            valueSetOverride.Published = publishedSet;

            this.parameter6ForOverride.ValueSet.Add(valueSet);
            this.parameter1.ValueSet.Add(valueSet);

            this.parameter6Override.ValueSet.Add(valueSetOverride);

            this.elementDefinitionForUsage1.Parameter.Add(this.parameter6ForOverride);
            this.elementDefinitionForUsage1.Parameter.Add(this.parameter1);

            this.elementUsage1.ParameterOverride.Add(this.parameter6Override);

            this.elementDefinition.ContainedElement.Add(this.elementUsage1);
            // ***************************************

            var row = new ElementUsageRowViewModel(this.elementUsage1, this.activeDomain, this.session.Object, null);

            // Verify That Override is displayed instead of parameter
            Assert.AreEqual(2, row.ContainedRows.Count);
            var overrideRow  = row.ContainedRows.SingleOrDefault(x => x.Thing == this.parameter6Override);
            var parameterRow = row.ContainedRows.SingleOrDefault(x => x.Thing == this.parameter1);

            Assert.IsNotNull(overrideRow);
            Assert.IsNotNull(parameterRow);
            // **********************************

            // Add a subscription to parameter and see that its replaced.
            var subscription = new ParameterSubscription(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                Owner = this.activeDomain
            };

            subscription.ValueSet.Add(new ParameterSubscriptionValueSet(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                SubscribedValueSet = valueSet
            });
            this.parameter1.ParameterSubscription.Add(subscription);

            revision.SetValue(this.elementDefinitionForUsage1, 1);
            CDPMessageBus.Current.SendObjectChangeEvent(this.elementDefinitionForUsage1, EventKind.Updated);

            Assert.AreEqual(2, row.ContainedRows.Count);
            var subscriptionRow = row.ContainedRows.SingleOrDefault(x => x.Thing == subscription);

            Assert.IsNotNull(subscriptionRow);

            parameterRow = row.ContainedRows.SingleOrDefault(x => x.Thing == this.parameter1);
            Assert.IsNull(parameterRow);

            // Add a subscription to the override of the usage
            var subscriptionOverride = new ParameterSubscription(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                Owner = this.activeDomain
            };

            subscriptionOverride.ValueSet.Add(new ParameterSubscriptionValueSet(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                SubscribedValueSet = valueSet
            });
            this.parameter6Override.ParameterSubscription.Add(subscriptionOverride);

            revision.SetValue(this.elementUsage1, 1);
            CDPMessageBus.Current.SendObjectChangeEvent(this.elementUsage1, EventKind.Updated);

            Assert.AreEqual(2, row.ContainedRows.Count);
            var subscriptionOverrideRow = row.ContainedRows.SingleOrDefault(x => x.Thing == subscriptionOverride);

            subscriptionRow = row.ContainedRows.SingleOrDefault(x => x.Thing == subscription);

            Assert.IsNotNull(subscriptionRow);
            Assert.IsNotNull(subscriptionOverrideRow);

            // removes the subscriptions
            this.parameter6Override.ParameterSubscription.Clear();
            revision.SetValue(this.elementUsage1, 2);

            CDPMessageBus.Current.SendObjectChangeEvent(this.elementUsage1, EventKind.Updated);
            Assert.AreEqual(2, row.ContainedRows.Count);
            overrideRow = row.ContainedRows.SingleOrDefault(x => x.Thing == this.parameter6Override);

            Assert.IsNotNull(overrideRow);

            this.parameter1.ParameterSubscription.Clear();
            revision.SetValue(this.elementDefinitionForUsage1, 2);
            CDPMessageBus.Current.SendObjectChangeEvent(this.elementDefinitionForUsage1, EventKind.Updated);
            Assert.AreEqual(2, row.ContainedRows.Count);
            parameterRow = row.ContainedRows.SingleOrDefault(x => x.Thing == this.parameter1);
            Assert.IsNotNull(parameterRow);
        }
示例#18
0
        public void SetUp()
        {
            this.cache = new ConcurrentDictionary <CacheKey, Lazy <Thing> >();

            this.iteration = new Iteration(Guid.NewGuid(), this.cache, null);

            var engineeringModel          = new EngineeringModel(Guid.NewGuid(), this.cache, null);
            var modelReferenceDataLibrary = new ModelReferenceDataLibrary(Guid.NewGuid(), this.cache, null);
            var iterationSetup            = new IterationSetup(Guid.NewGuid(), this.cache, null);
            var engineeringModelSetup     = new EngineeringModelSetup(Guid.NewGuid(), this.cache, null);

            engineeringModel.EngineeringModelSetup = engineeringModelSetup;
            engineeringModelSetup.RequiredRdl.Add(modelReferenceDataLibrary);

            this.iteration.Container = engineeringModel;
            iterationSetup.Container = engineeringModelSetup;

            this.iteration.IterationSetup = iterationSetup;
            this.iteration.Container      = engineeringModel;

            // Option
            this.option = new Option(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "option1",
                Name      = "option1"
            };

            this.iteration.Option.Add(this.option);

            // Categories
            this.cat1 = new Category(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "cat1",
                Name      = "cat1"
            };

            modelReferenceDataLibrary.DefinedCategory.Add(this.cat1);

            this.cache.TryAdd(
                new CacheKey(this.cat1.Iid, null),
                new Lazy <Thing>(() => this.cat1));

            this.cat2 = new Category(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "cat2",
                Name      = "cat2"
            };

            modelReferenceDataLibrary.DefinedCategory.Add(this.cat2);

            this.cache.TryAdd(
                new CacheKey(this.cat2.Iid, null),
                new Lazy <Thing>(() => this.cat2));

            this.cat3 = new Category(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "cat3",
                Name      = "cat3"
            };

            modelReferenceDataLibrary.DefinedCategory.Add(this.cat3);

            this.cache.TryAdd(
                new CacheKey(this.cat3.Iid, null),
                new Lazy <Thing>(() => this.cat3));

            // Domain of expertise

            this.domain = new DomainOfExpertise(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "domain",
                Name      = "domain"
            };

            this.session = new Mock <ISession>();
            this.session.Setup(x => x.QuerySelectedDomainOfExpertise(It.IsAny <Iteration>())).Returns(this.domain);

            // Element Definitions
            this.ed1 = new ElementDefinition(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "ed1",
                Name      = "element definition 1",
                Owner     = this.domain,
                Container = this.iteration
            };

            this.parameter1 = new Parameter(Guid.NewGuid(), this.cache, null);

            var parameterValueSet = new ParameterValueSet(Guid.NewGuid(), this.cache, null)
            {
                Reference   = new ValueArray <string>(new[] { "1" }),
                Computed    = new ValueArray <string>(new[] { "2" }),
                Formula     = new ValueArray <string>(new[] { "3" }),
                Manual      = new ValueArray <string>(new[] { "4" }),
                Published   = new ValueArray <string>(new[] { "5" }),
                ValueSwitch = ParameterSwitchKind.MANUAL
            };

            this.parameter1.Owner = this.domain;

            this.parameter1.ParameterType = new SimpleQuantityKind
            {
                ShortName = "par"
            };

            this.parameter1.ValueSet.Add(parameterValueSet);

            this.ed2p = new ElementDefinition(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "ed2p",
                Name      = "element definition 2p",
                Owner     = this.domain,
                Container = this.iteration
            };

            this.ed2n = new ElementDefinition(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "ed2n",
                Name      = "element definition 2n",
                Owner     = this.domain,
                Container = this.iteration
            };

            this.ed3 = new ElementDefinition(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "ed3",
                Name      = "element definition 3",
                Owner     = this.domain,
                Container = this.iteration
            };

            this.ed4 = new ElementDefinition(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "ed4",
                Name      = "element definition 4",
                Owner     = this.domain,
                Container = this.iteration
            };

            this.ed5 = new ElementDefinition(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "ed5",
                Name      = "element definition 5 same category",
                Owner     = this.domain,
                Container = this.iteration
            };

            this.ed6 = new ElementDefinition(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "ed6",
                Name      = "element definition 6 no category",
                Owner     = this.domain,
                Container = this.iteration
            };

            this.ed7 = new ElementDefinition(Guid.NewGuid(), this.cache, null)
            {
                ShortName = "ed7",
                Name      = "element definition 7 ",
                Owner     = this.domain,
                Container = this.iteration
            };

            // Element Usages

            this.eu12p1 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed2p,
                ShortName         = "eu12p1",
                Name  = "element usage 1->2p #1",
                Owner = this.domain
            };

            this.eu12p2 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed2p,
                ShortName         = "eu12p2",
                Name  = "element usage 1->2p #2",
                Owner = this.domain
            };

            this.eu12n1 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed2n,
                ShortName         = "eu12n1",
                Name  = "element usage 1->2n #1",
                Owner = this.domain
            };

            this.eu12n2 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed2n,
                ShortName         = "eu12n2",
                Name  = "element usage 1->2n #2",
                Owner = this.domain
            };

            this.eu2p31 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed3,
                ShortName         = "eu2p31",
                Name  = "element usage 2p->3 #1",
                Owner = this.domain
            };

            this.eu2p32 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed3,
                ShortName         = "eu2p32",
                Name  = "element usage 2p->3 #2",
                Owner = this.domain
            };

            this.eu2n31 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed3,
                ShortName         = "eu2n31",
                Name  = "element usage 2n->3 #1",
                Owner = this.domain
            };

            this.eu2n32 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed3,
                ShortName         = "eu2n32",
                Name  = "element usage 2n->3 #2",
                Owner = this.domain
            };

            this.eu4 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed4,
                ShortName         = "eu4",
                Name  = "element usage 1->4",
                Owner = this.domain
            };

            this.eu5 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed5,
                ShortName         = "eu5",
                Name  = "element usage 4->5",
                Owner = this.domain
            };

            this.eu6 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed6,
                ShortName         = "eu6",
                Name  = "element usage 5->6",
                Owner = this.domain
            };

            this.eu7 = new ElementUsage(Guid.NewGuid(), this.cache, null)
            {
                ElementDefinition = this.ed7,
                ShortName         = "eu7",
                Name  = "element usage 6->7",
                Owner = this.domain
            };

            // Structure

            this.iteration.TopElement = this.ed1;
            this.ed1.Category.Add(this.cat1);

            this.eu12n1.Category.Add(this.cat2);
            this.ed1.ContainedElement.Add(this.eu12n1);
            this.ed1.ContainedElement.Add(this.eu12n2);

            this.eu12p1.Category.Add(this.cat2);
            this.ed1.ContainedElement.Add(this.eu12p1);
            this.ed1.ContainedElement.Add(this.eu12p2);

            this.ed2n.ContainedElement.Add(this.eu2n31);
            this.ed2n.ContainedElement.Add(this.eu2n32);

            this.eu2p31.Category.Add(this.cat3);
            this.ed2p.ContainedElement.Add(this.eu2p31);
            this.ed2p.ContainedElement.Add(this.eu2p32);

            this.eu4.Category.Add(this.cat2);
            this.ed1.ContainedElement.Add(this.eu4);

            this.ed4.ContainedElement.Add(this.eu5);

            this.ed5.ContainedElement.Add(this.eu6);

            this.ed7.Category.Add(this.cat3);
            this.ed6.ContainedElement.Add(this.eu7);

            // Product tree:
            // ["cat1"] --> "ed1"
            // ["cat2"] +--> "ed1.eu12n1"
            // [      ]   +--> "ed1.eu12n1.eu2n31"
            // [      ]   +--> "ed1.eu12n1.eu2n32"
            // [      ] + +> "ed1.eu12n2"
            // [      ]   +--> "ed1.eu12n2.eu2n31"
            // [      ]   +--> "ed1.eu12n2.eu2n32"
            // ["cat2"] +--> "ed1.eu12p1"
            // ["cat3"]   +--> "ed1.eu12p1.eu2p31"
            // [      ]   +--> "ed1.eu12p1.eu2p32"
            // [      ] + --> "ed1.eu12p2"
            // ["cat3"]   +--> "ed1.eu12p2.eu2p31"
            // [      ]   +--> "ed1.eu12p2.eu2p32"
            // ["cat2"] +--> "ed1.eu4"
            // [      ]   +--> "ed1.eu4.eu5"
            // [      ]     +--> "ed1.eu4.eu5.eu6"
            // ["cat3"]       +--> "ed1.eu4.eu5.eu6.eu7"
        }
示例#19
0
        public void Setup()
        {
            this.assembler = new Assembler(this.uri);
            this.session   = new Mock <ISession>();
            this.session.Setup(x => x.Assembler).Returns(this.assembler);
            var dal = new Mock <IDal>();

            dal.Setup(x => x.IsReadOnly).Returns(false);
            this.session.Setup(x => x.Dal).Returns(dal.Object);

            this.sitedir         = new SiteDirectory(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.modelsetup      = new EngineeringModelSetup(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.iterationSetup  = new IterationSetup(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.person          = new Person(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.domain1         = new DomainOfExpertise(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.domain2         = new DomainOfExpertise(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.personRole      = new PersonRole(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.participant     = new Participant(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.participantRole = new ParticipantRole(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.model           = new EngineeringModel(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                EngineeringModelSetup = this.modelsetup
            };
            this.iteration = new Iteration(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                IterationSetup = this.iterationSetup
            };
            this.definition   = new Definition(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.srdl         = new SiteReferenceDataLibrary(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.booleanpt    = new BooleanParameterType(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.person2      = new Person(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.elementDef   = new ElementDefinition(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.relationship = new BinaryRelationship(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.parameter    = new Parameter(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.valueset     = new ParameterValueSet(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.requirementsSpecification = new RequirementsSpecification(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.requirement     = new Requirement(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.commonFileStore = new CommonFileStore(Guid.NewGuid(), this.assembler.Cache, this.uri);

            this.sitedir.Model.Add(this.modelsetup);
            this.sitedir.Person.Add(this.person);
            this.sitedir.Person.Add(this.person2);
            this.sitedir.PersonRole.Add(this.personRole);
            this.sitedir.Domain.Add(this.domain1);
            this.sitedir.Domain.Add(this.domain2);
            this.modelsetup.IterationSetup.Add(this.iterationSetup);
            this.modelsetup.Participant.Add(this.participant);
            this.sitedir.ParticipantRole.Add(this.participantRole);
            this.model.Iteration.Add(this.iteration);
            this.person.Role        = this.personRole;
            this.participant.Person = this.person;
            this.participant.Role   = this.participantRole;
            this.participant.Domain.Add(this.domain1);
            this.modelsetup.Definition.Add(this.definition);
            this.sitedir.SiteReferenceDataLibrary.Add(this.srdl);
            this.srdl.ParameterType.Add(this.booleanpt);
            this.iteration.Element.Add(this.elementDef);
            this.iteration.Relationship.Add(this.relationship);
            this.elementDef.Parameter.Add(this.parameter);
            this.parameter.ValueSet.Add(this.valueset);

            this.modelsetup.EngineeringModelIid = this.model.Iid;
            this.iterationSetup.IterationIid    = this.iteration.Iid;
            this.elementDef.Owner   = this.domain1;
            this.relationship.Owner = this.domain1;
            this.parameter.Owner    = this.domain1;
            this.requirementsSpecification.Requirement.Add(this.requirement);
            this.iteration.RequirementsSpecification.Add(this.requirementsSpecification);
            this.model.CommonFileStore.Add(this.commonFileStore);

            this.session.Setup(x => x.ActivePerson).Returns(this.person);
            this.session.Setup(x => x.Assembler).Returns(this.assembler);
            this.session.Setup(x => x.OpenIterations).Returns(new Dictionary <Iteration, Tuple <DomainOfExpertise, Participant> >
            {
                { this.iteration, new Tuple <DomainOfExpertise, Participant>(this.domain1, this.participant) }
            });

            this.permissionService = new PermissionService(this.session.Object);
        }
        public void SetUp()
        {
            this.concurentDictionary = new ConcurrentDictionary <CacheKey, Lazy <Thing> >();

            this.iteration = new Iteration(Guid.NewGuid(), this.concurentDictionary, this.uri);

            this.SystemEngineering = new DomainOfExpertise(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                Name      = "System Engineering",
                ShortName = "SYS"
            };

            this.PowerEngineering = new DomainOfExpertise(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                Name      = "Power Engineering",
                ShortName = "PWR"
            };

            this.optionA = new Option(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName = "A",
                Name      = "Option A"
            };
            this.optionB = new Option(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName = "B",
                Name      = "Option B"
            };
            this.iteration.Option.Add(this.optionA);
            this.iteration.Option.Add(this.optionB);

            this.cellCategory = new Category(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName = "CELLS",
                Name      = "Cells"
            };


            this.satelliteDefinition = new ElementDefinition(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName = "SAT",
                Name      = "Satellite",
                Owner     = this.SystemEngineering
            };
            this.iteration.Element.Add(this.satelliteDefinition);
            this.iteration.TopElement = this.satelliteDefinition;

            this.solarArrayDefinition = new ElementDefinition(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName = "SA",
                Name      = "Solar Array",
                Owner     = this.PowerEngineering
            };
            this.iteration.Element.Add(this.solarArrayDefinition);

            this.arrayWingDefinition = new ElementDefinition(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName = "WING",
                Name      = "Wing",
                Owner     = this.PowerEngineering
            };
            this.iteration.Element.Add(this.arrayWingDefinition);

            this.solarCellDefinition = new ElementDefinition(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName = "CELL",
                Name      = "Cell",
                Owner     = this.PowerEngineering,
            };
            this.solarCellDefinition.Category.Add(this.cellCategory);

            this.iteration.Element.Add(this.solarCellDefinition);

            var solarArrayUsage = new ElementUsage(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName         = "SA",
                Name              = "The Solar Array",
                ElementDefinition = this.solarArrayDefinition,
                Owner             = this.PowerEngineering
            };

            this.satelliteDefinition.ContainedElement.Add(solarArrayUsage);

            this.wingLeftUsage = new ElementUsage(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName         = "LW",
                Name              = "Left Wing",
                ElementDefinition = this.arrayWingDefinition,
                Owner             = this.PowerEngineering
            };
            var wingRightUsage = new ElementUsage(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName         = "LW",
                Name              = "Left Wing",
                ElementDefinition = this.arrayWingDefinition,
                Owner             = this.PowerEngineering
            };

            this.solarArrayDefinition.ContainedElement.Add(this.wingLeftUsage);
            this.solarArrayDefinition.ContainedElement.Add(wingRightUsage);

            var aSolarCellUsage = new ElementUsage(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName         = "A",
                Name              = "Cell A",
                ElementDefinition = solarCellDefinition,
                Owner             = this.PowerEngineering
            };
            var bSolarCellUsage = new ElementUsage(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName         = "B",
                Name              = "Cell B",
                ElementDefinition = solarCellDefinition,
                Owner             = this.PowerEngineering
            };
            var cSolarCellUsage = new ElementUsage(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName         = "C",
                Name              = "Cell C",
                ElementDefinition = solarCellDefinition,
                Owner             = this.PowerEngineering
            };
            var dSolarCellUsage = new ElementUsage(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName         = "D",
                Name              = "Cell D",
                ElementDefinition = solarCellDefinition,
                Owner             = this.PowerEngineering
            };

            this.arrayWingDefinition.ContainedElement.Add(aSolarCellUsage);
            this.arrayWingDefinition.ContainedElement.Add(bSolarCellUsage);
            this.arrayWingDefinition.ContainedElement.Add(cSolarCellUsage);
            this.arrayWingDefinition.ContainedElement.Add(dSolarCellUsage);

            // Create ParameterTypes and Parameters
            this.mass = new SimpleQuantityKind(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName = "m",
                Name      = "mass"
            };

            var length = new SimpleQuantityKind(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName = "l",
                Name      = "length"
            };

            this.cartesianCoordinates = new ArrayParameterType(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName = "coord",
                Name      = "coordinate"
            };

            var xcoordinate = new ParameterTypeComponent(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName     = "x",
                ParameterType = length
            };
            var ycoordinate = new ParameterTypeComponent(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName     = "y",
                ParameterType = length
            };
            var zcoordinate = new ParameterTypeComponent(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ShortName     = "z",
                ParameterType = length
            };

            this.cartesianCoordinates.Component.Add(xcoordinate);
            this.cartesianCoordinates.Component.Add(ycoordinate);
            this.cartesianCoordinates.Component.Add(zcoordinate);

            this.satelliteMass = new Parameter(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ParameterType = this.mass,
                Owner         = this.SystemEngineering
            };
            var satelliteMassValueset = new ParameterValueSet(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL
            };

            this.satelliteMass.ValueSet.Add(satelliteMassValueset);
            this.satelliteDefinition.Parameter.Add(this.satelliteMass);

            this.solarCellMass = new Parameter(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ParameterType = this.mass,
                Owner         = this.PowerEngineering
            };

            var solarCellMassValueset = new ParameterValueSet(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL
            };

            this.solarCellMass.ValueSet.Add(solarCellMassValueset);
            this.solarCellDefinition.Parameter.Add(this.solarCellMass);

            this.solarCellCoordinates = new Parameter(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                ParameterType = this.cartesianCoordinates,
                Owner         = this.PowerEngineering
            };
            var solarCellCoordinatesValueSet = new ParameterValueSet(Guid.NewGuid(), this.concurentDictionary, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "x-manual", "y-manual", "z-manual"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "x-computed", "y-computed", "z-computed"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "x-formula", "y-formula", "z-formula"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL
            };

            this.solarCellCoordinates.ValueSet.Add(solarCellCoordinatesValueSet);
            this.solarCellDefinition.Parameter.Add(this.solarCellCoordinates);
        }
        public void VerifyThatNestedParameterExcelRowPropertiesAreSetForParameterOverride()
        {
            var parameter = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                ParameterType = this.length,
                Scale         = this.meter,
                Owner         = this.powerEngineering
            };

            var parameterValueSet = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "A"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "B"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "C"
                }),
                ValueSwitch = ParameterSwitchKind.MANUAL,
            };

            parameter.ValueSet.Add(parameterValueSet);
            this.battery.Parameter.Add(parameter);

            var parameterOverride = new ParameterOverride(Guid.NewGuid(), this.cache, this.uri);

            parameterOverride.Owner = this.powerEngineering;

            var paameterOverrideValueSet = new ParameterOverrideValueSet(Guid.NewGuid(), this.cache, this.uri)
            {
                Manual = new ValueArray <string>(new List <string> {
                    "A"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "B"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "C"
                }),
                ValueSwitch       = ParameterSwitchKind.MANUAL,
                ParameterValueSet = parameterValueSet
            };

            parameterOverride.ValueSet.Add(paameterOverrideValueSet);
            parameterOverride.Parameter = parameter;

            this.batteryUsage.ParameterOverride.Add(parameterOverride);

            var nestedElementTreeGenerator = new NestedElementTreeGenerator();
            var nestedElements             = nestedElementTreeGenerator.Generate(this.option, this.powerEngineering);

            foreach (var nestedElement in nestedElements)
            {
                Console.WriteLine(nestedElement.ShortName);
            }

            var batteryNode     = nestedElements.Single(ne => ne.ShortName == "SAT.batt");
            var nestedparameter = batteryNode.NestedParameter.Single();

            var excelRow = new NestedParameterExcelRow(nestedparameter);

            Assert.AreEqual("=BAT.l", excelRow.ActualValue);
            Assert.AreEqual("SAT.batt\\l\\option1\\", excelRow.ModelCode);
            Assert.AreEqual("Length", excelRow.Name);
            Assert.AreEqual("PWR", excelRow.Owner);
            Assert.AreEqual("l [m]", excelRow.ParameterTypeShortName);
            Assert.AreEqual("NP", excelRow.Type);
        }
示例#22
0
        public void SetUp()
        {
            this.cache = new ConcurrentDictionary <CacheKey, Lazy <Thing> >();
            this.uri   = new Uri("http://www.rheagroup.com");

            this.textParameterType           = new TextParameterType(Guid.NewGuid(), this.cache, this.uri);
            this.textParameterType.Name      = "text";
            this.textParameterType.ShortName = "TXT";

            var satellite = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri);

            satellite.ShortName = "Sat";
            satellite.Name      = "Satellite";

            var battery = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri);

            battery.ShortName = "Bat";
            battery.Name      = "Battery";

            var elementUsage = new ElementUsage(Guid.NewGuid(), this.cache, this.uri);

            elementUsage.ElementDefinition = battery;

            satellite.ContainedElement.Add(elementUsage);

            this.parameter = new Parameter(Guid.NewGuid(), this.cache, this.uri);
            this.parameter.ParameterType = this.textParameterType;

            satellite.Parameter.Add(this.parameter);

            this.parameterOverride           = new ParameterOverride(Guid.NewGuid(), this.cache, this.uri);
            this.parameterOverride.Parameter = this.parameter;

            var parameterValueSet = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri);

            parameterValueSet.Manual = new ValueArray <string>(new List <string> {
                "1"
            });
            parameterValueSet.Reference = new ValueArray <string>(new List <string> {
                "2"
            });
            parameterValueSet.Computed = new ValueArray <string>(new List <string> {
                "3"
            });
            parameterValueSet.Formula = new ValueArray <string>(new List <string> {
                "-"
            });
            parameterValueSet.Published = new ValueArray <string>(new List <string> {
                "-"
            });
            parameterValueSet.ValueSwitch = ParameterSwitchKind.MANUAL;
            this.parameter.ValueSet.Add(parameterValueSet);

            var parameterOverrideValueSet = new ParameterOverrideValueSet(Guid.NewGuid(), this.cache, this.uri);

            parameterOverrideValueSet.Manual = new ValueArray <string>(new List <string> {
                "1.1"
            });
            parameterOverrideValueSet.Reference = new ValueArray <string>(new List <string> {
                "2.1"
            });
            parameterOverrideValueSet.Computed = new ValueArray <string>(new List <string> {
                "3.1"
            });
            parameterOverrideValueSet.Formula = new ValueArray <string>(new List <string> {
                "-"
            });
            parameterOverrideValueSet.Published = new ValueArray <string>(new List <string> {
                "-"
            });
            parameterOverrideValueSet.ValueSwitch = ParameterSwitchKind.MANUAL;
            this.parameterOverride.ValueSet.Add(parameterOverrideValueSet);
            parameterOverrideValueSet.ParameterValueSet = parameterValueSet;

            elementUsage.ParameterOverride.Add(this.parameterOverride);

            var parameterSubscribtionValueSet = new ParameterSubscriptionValueSet(Guid.NewGuid(), this.cache, this.uri);

            parameterSubscribtionValueSet.Manual = new ValueArray <string>(new List <string> {
                "1.2"
            });
            parameterSubscribtionValueSet.ValueSwitch        = ParameterSwitchKind.MANUAL;
            parameterSubscribtionValueSet.SubscribedValueSet = parameterValueSet;

            var parameterSubscription = new ParameterSubscription(Guid.NewGuid(), this.cache, this.uri);

            this.parameter.ParameterSubscription.Add(parameterSubscription);
            parameterSubscription.ValueSet.Add(parameterSubscribtionValueSet);

            this.processedValueSets = new Dictionary <Guid, ProcessedValueSet>();

            var valueSetValue = new ValueSetValues(0, this.textParameterType, ParameterSwitchKind.COMPUTED, "a gazilion", "a gazilion", "a gazilion", "a gazilion");

            var parameterValueSetProcessedValueSet = new ProcessedValueSet(parameterValueSet, ValidationResultKind.Valid);

            parameterValueSetProcessedValueSet.UpdateClone(valueSetValue);

            var parameterOverrideValueSetProcessedValueSet = new ProcessedValueSet(parameterOverrideValueSet, ValidationResultKind.Valid);

            parameterOverrideValueSetProcessedValueSet.UpdateClone(valueSetValue);

            var parameterSubscribtionValueSetProcessedValueSet = new ProcessedValueSet(parameterSubscribtionValueSet, ValidationResultKind.Valid);

            parameterSubscribtionValueSetProcessedValueSet.UpdateClone(valueSetValue);

            this.processedValueSets.Add(parameterValueSetProcessedValueSet.OriginalThing.Iid, parameterValueSetProcessedValueSet);
            this.processedValueSets.Add(parameterOverrideValueSetProcessedValueSet.OriginalThing.Iid, parameterOverrideValueSetProcessedValueSet);
            this.processedValueSets.Add(parameterSubscribtionValueSetProcessedValueSet.OriginalThing.Iid, parameterSubscribtionValueSetProcessedValueSet);
        }
示例#23
0
        public async Task SetUp()
        {
            RxApp.MainThreadScheduler = Scheduler.CurrentThread;

            this.thingDialogNavigationService = new Mock <IThingDialogNavigationService>();
            this.panelNavigationService       = new Mock <IPanelNavigationService>();
            this.dialogNavigationService      = new Mock <IDialogNavigationService>();

            this.assembler = new Assembler(this.uri);
            this.session   = new Mock <ISession>();
            this.session.Setup(x => x.Assembler).Returns(this.assembler);

            this.outputTerminal = new OutputTerminal();

            this.scriptViewModel = new Mock <IScriptPanelViewModel>();
            this.scriptViewModel.SetupGet(x => x.OutputTerminal).Returns(() => this.outputTerminal);
            this.scriptViewModel.SetupProperty(x => x.SelectedSession, session.Object);

            this.scriptingProxy = new ScriptingProxy(this.thingDialogNavigationService.Object, this.panelNavigationService.Object, this.dialogNavigationService.Object);
            this.scriptingProxy.ScriptingPanelViewModel = this.scriptViewModel.Object;

            // Creation of the elements that can be searched using a script
            this.engineeringModelSetup = new EngineeringModelSetup(Guid.NewGuid(), this.assembler.Cache, null)
            {
                Name      = "model",
                ShortName = "Train"
            };

            this.engineerModel = new EngineeringModel(Guid.NewGuid(), this.assembler.Cache, null)
            {
                EngineeringModelSetup = engineeringModelSetup
            };
            this.engineerModel.EngineeringModelSetup = this.engineeringModelSetup;

            this.iterationSetup = new IterationSetup(Guid.NewGuid(), this.assembler.Cache, this.uri);
            this.iteration      = new Iteration(Guid.NewGuid(), this.assembler.Cache, null)
            {
                IterationSetup = this.iterationSetup
            };
            this.iteration.IterationSetup = this.iterationSetup;

            this.elementDefinition = new ElementDefinition(Guid.NewGuid(), this.assembler.Cache, this.uri)
            {
                Name      = "element",
                ShortName = "Transformator"
            };

            this.mass = new SimpleQuantityKind(Guid.NewGuid(), null, this.uri)
            {
                Name      = "parameter",
                ShortName = "mass"
            };

            this.parameter = new Parameter(Guid.NewGuid(), this.assembler.Cache, null)
            {
                ParameterType = this.mass
            };

            this.parameterValueSet = new ParameterValueSet(Guid.NewGuid(), this.assembler.Cache, null)
            {
                Reference = new ValueArray <string>(new List <string> {
                    "100"
                }),
                Computed = new ValueArray <string>(new List <string> {
                    "-"
                }),
                Formula = new ValueArray <string>(new List <string> {
                    "-"
                }),
                ValueSwitch = ParameterSwitchKind.REFERENCE
            };

            this.engineerModel.Iteration.Add(this.iteration);
            this.iteration.Element.Add(this.elementDefinition);
            this.elementDefinition.Parameter.Add(this.parameter);
            this.parameter.ValueSet.Add(this.parameterValueSet);

            // Inclusion of the engineering model in the cache
            var testThing = new Lazy <Thing>(() => this.engineerModel);

            testThing.Value.Cache.TryAdd(new CacheKey(testThing.Value.Iid, null), testThing);
        }
示例#24
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ParameterValueSetCacheItem"/> class.
 /// </summary>
 /// <param name="parameter">
 /// The <see cref="Parameter"/> to which the <see cref="ParameterValueSet"/> is associated
 /// </param>
 /// <param name="parameterValueSet">
 /// The <see cref="ParameterValueSet"/> that is associated to the <see cref="Parameter"/>
 /// </param>
 public ParameterValueSetCacheItem(Parameter parameter, ParameterValueSet parameterValueSet)
 {
     this.Parameter         = parameter;
     this.ParameterValueSet = parameterValueSet;
 }
 /// <summary>
 /// Add an Value Set row view model to the list of <see cref="ValueSet"/>
 /// </summary>
 /// <param name="valueSet">
 /// The <see cref="ValueSet"/> that is to be added
 /// </param>
 private ParameterValueSetRowViewModel AddValueSetRowViewModel(ParameterValueSet valueSet)
 {
     return(new ParameterValueSetRowViewModel(valueSet, this.Session, this));
 }
示例#26
0
        public void Setup()
        {
            this.OverideService           = new Mock <IParameterOverrideService>();
            this.parameterValueSetService = new Mock <IParameterValueSetService>();
            this.overrideValueSetService  = new Mock <IParameterOverrideValueSetService>();
            this.parameterService         = new Mock <IParameterService>();
            this.securityContext          = new Mock <ISecurityContext>();
            this.transactionManager       = new Mock <ICdp4TransactionManager>();
            this.publicationSideEffect    = new PublicationSideEffect
            {
                ParameterService                 = this.parameterService.Object,
                ParameterOverrideService         = this.OverideService.Object,
                ParameterValueSetService         = this.parameterValueSetService.Object,
                ParameterOverrideValueSetService = this.overrideValueSetService.Object,
                TransactionManager               = this.transactionManager.Object
            };

            this.npgsqlTransaction = null;
            var valuearray = new ValueArray <string>(new[] { "-" });

            var option1        = new Option(Guid.NewGuid(), 1);
            var option2        = new Option(Guid.NewGuid(), 1);
            var orderedOption1 = new OrderedItem {
                V = option1
            };
            var orderedOption2 = new OrderedItem {
                V = option2
            };

            this.iteration = new Iteration(Guid.NewGuid(), 1);
            var actualFiniteState  = new ActualFiniteState(Guid.NewGuid(), 1);
            var parameterValueSet1 = new ParameterValueSet(Guid.NewGuid(), 1)
            {
                ActualState  = actualFiniteState.Iid,
                ActualOption = option1.Iid,
                Manual       = valuearray,
                Computed     = valuearray,
                Reference    = valuearray
            };
            var parameterValueSet2 = new ParameterValueSet(Guid.NewGuid(), 1)
            {
                ActualState  = actualFiniteState.Iid,
                ActualOption = option2.Iid,
                Manual       = valuearray,
                Computed     = valuearray,
                Reference    = valuearray
            };
            var parameter = new Parameter(Guid.NewGuid(), 1)
            {
                IsOptionDependent = true,
                StateDependence   = actualFiniteState.Iid
            };

            parameter.ValueSet.Add(parameterValueSet1.Iid);
            parameter.ValueSet.Add(parameterValueSet2.Iid);
            var actualFiniteStateList = new ActualFiniteStateList(Guid.NewGuid(), 1);

            actualFiniteStateList.ActualState.Add(actualFiniteState.Iid);
            var parameterOverride = new ParameterOverride(Guid.NewGuid(), 1)
            {
                Parameter = parameter.Iid
            };
            var overrideValueset1 = new ParameterOverrideValueSet(Guid.NewGuid(), 1)
            {
                ParameterValueSet = parameterValueSet1.Iid,
                Manual            = valuearray,
                Computed          = valuearray,
                Reference         = valuearray
            };
            var overrideValueset2 = new ParameterOverrideValueSet(Guid.NewGuid(), 1)
            {
                ParameterValueSet = parameterValueSet2.Iid,
                Manual            = valuearray,
                Computed          = valuearray,
                Reference         = valuearray
            };

            parameterOverride.ValueSet.Add(overrideValueset1.Iid);
            parameterOverride.ValueSet.Add(overrideValueset2.Iid);

            var publishedParametersAndOverridesIids = new List <Guid> {
                parameter.Iid, parameterOverride.Iid
            };

            this.publication = new Publication(Guid.NewGuid(), 1);
            this.publication.PublishedParameter.AddRange(publishedParametersAndOverridesIids);
            this.iteration.Publication.Add(this.publication.Iid);
            this.iteration.Option.Add(orderedOption1);
            this.iteration.Option.Add(orderedOption2);


            this.parameterService.Setup(x => x.GetShallow(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <IEnumerable <Guid> >(), this.securityContext.Object)).Returns(new [] { parameter });
            this.OverideService.Setup(x => x.GetShallow(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <IEnumerable <Guid> >(), this.securityContext.Object)).Returns(new [] { parameterOverride });
            this.parameterValueSetService.Setup(x => x.GetShallow(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <IEnumerable <Guid> >(), this.securityContext.Object)).Returns(new [] { parameterValueSet1, parameterValueSet2 });
            this.overrideValueSetService.Setup(x => x.GetShallow(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <IEnumerable <Guid> >(), this.securityContext.Object)).Returns(new [] { overrideValueset1, overrideValueset2 });

            this.parameterValueSetService.Setup(x => x.UpdateConcept(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <ParameterValueSetBase>(), It.IsAny <ParameterOrOverrideBase>())).Returns(true);
            this.overrideValueSetService.Setup(x => x.UpdateConcept(It.IsAny <NpgsqlTransaction>(), It.IsAny <string>(), It.IsAny <ParameterValueSetBase>(), It.IsAny <ParameterOrOverrideBase>())).Returns(true);

            this.transactionManager.Setup(x => x.GetTransactionTime(It.IsAny <NpgsqlTransaction>())).Returns(DateTime.Now);
        }
        /// <summary>
        /// Write parameter row.
        /// </summary>
        /// <param name="csvFileWriter">
        /// The CSV file writer.
        /// </param>
        /// <param name="this.headers">
        /// The this.headers.
        /// </param>
        /// <param name="engineeringModelShortName">
        /// The engineering model short name.
        /// </param>
        /// <param name="parameterValueSet">
        /// The parameter value set.
        /// </param>
        private void WriteParameterRow(CsvFileWriter csvFileWriter, string engineeringModelShortName, ParameterValueSet parameterValueSet)
        {
            var elementDefinition  = parameterValueSet.GetContainerOfType <ElementDefinition>();
            var containerParameter = parameterValueSet.GetContainerOfType <Parameter>();
            var fields             = new string[this.headers.Count];

            fields[this.headers.IndexOf(nameof(EngineeringModel))]  = engineeringModelShortName;
            fields[this.headers.IndexOf(nameof(ElementDefinition))] = elementDefinition.Name;
            fields[this.headers.IndexOf($"{nameof(ElementDefinition)}.{nameof(ElementDefinition.ShortName)}")] = elementDefinition.ShortName;
            fields[this.headers.IndexOf(nameof(DomainOfExpertise))] = parameterValueSet.Owner.ShortName;
            fields[this.headers.IndexOf($"{nameof(ParameterSubscription)}.{nameof(ParameterSubscription.Owner)}")] = "";
            fields[this.headers.IndexOf(nameof(Category))]                        = string.Join(", ", elementDefinition.Category.Select(cat => cat.ShortName).OrderBy(sn => sn));
            fields[this.headers.IndexOf(nameof(ParameterGroup))]                  = parameterValueSet.GetContainerOfType <ParameterGroup>()?.UserFriendlyShortName;
            fields[this.headers.IndexOf(nameof(ReferenceDataLibrary))]            = string.Join(", ", containerParameter.ParameterType.RequiredRdls.Select(x => x.ShortName));
            fields[this.headers.IndexOf(nameof(Parameter))]                       = containerParameter.ParameterType.UserFriendlyShortName;
            fields[this.headers.IndexOf(nameof(Parameter.UserFriendlyShortName))] = containerParameter.ParameterType.ShortName;
            fields[this.headers.IndexOf(nameof(ActualFiniteState.ShortName))]     = parameterValueSet.ActualState?.ShortName ?? "";
            fields[this.headers.IndexOf(nameof(Option.ShortName))]                = parameterValueSet.ActualOption?.ShortName ?? "";
            fields[this.headers.IndexOf(nameof(ParameterValueSet.ActualValue))]   = parameterValueSet.ActualValue?.FirstOrDefault() ?? "";
            fields[this.headers.IndexOf(nameof(ParameterValueSet.Published))]     = parameterValueSet.Published?.FirstOrDefault() ?? "";
            fields[this.headers.IndexOf(nameof(MeasurementScale))]                = containerParameter.Scale?.ShortName ?? "";
            fields[this.headers.IndexOf(nameof(ParameterSwitchKind))]             = parameterValueSet.ValueSwitch.ToString();
            fields[this.headers.IndexOf(nameof(ParameterSwitchKind.COMPUTED))]    = string.Join("|", parameterValueSet.Computed.Select(x => x ?? ""));
            fields[this.headers.IndexOf(nameof(ParameterSwitchKind.MANUAL))]      = string.Join("|", parameterValueSet.Manual.Select(x => x ?? ""));
            fields[this.headers.IndexOf(nameof(ParameterSwitchKind.REFERENCE))]   = string.Join("|", parameterValueSet.Reference.Select(x => x ?? ""));
            fields[this.headers.IndexOf(nameof(ParameterValueSet.Formula))]       = string.Join("|", parameterValueSet.Formula.Select(s => $"\"{s}\""));
            csvFileWriter.WriteRow(fields);
        }
示例#28
0
        public void SetUp()
        {
            this.excelRows = new List <IExcelRow <Thing> >();

            this.owner = new DomainOfExpertise(Guid.NewGuid(), null, null)
            {
                Name = "system", ShortName = "SYS"
            };

            // Reference SitedirectoryData
            var lengthunit = new SimpleUnit(Guid.NewGuid(), null, null);

            lengthunit.ShortName = "m";
            lengthunit.Name      = "metre";

            var lengthscale = new RatioScale(Guid.NewGuid(), null, null);

            lengthscale.Unit      = lengthunit;
            lengthscale.ShortName = "m-scale";
            lengthscale.Name      = "metre scale";

            var xcoord = new SimpleQuantityKind(Guid.NewGuid(), null, null)
            {
                Name = "x", ShortName = "x"
            };

            xcoord.PossibleScale.Add(lengthscale);
            xcoord.DefaultScale = lengthscale;

            var ycoord = new SimpleQuantityKind(Guid.NewGuid(), null, null)
            {
                Name = "y", ShortName = "y"
            };

            ycoord.PossibleScale.Add(lengthscale);
            ycoord.DefaultScale = lengthscale;

            var zcoord = new SimpleQuantityKind(Guid.NewGuid(), null, null)
            {
                Name = "z", ShortName = "z"
            };

            zcoord.PossibleScale.Add(lengthscale);
            zcoord.DefaultScale = lengthscale;

            var vector = new ArrayParameterType(Guid.NewGuid(), null, null);

            vector.Name      = "coordinate";
            vector.ShortName = "coord";
            var xcomp = new ParameterTypeComponent(Guid.NewGuid(), null, null)
            {
                ParameterType = xcoord
            };
            var ycomp = new ParameterTypeComponent(Guid.NewGuid(), null, null)
            {
                ParameterType = ycoord
            };
            var zcomp = new ParameterTypeComponent(Guid.NewGuid(), null, null)
            {
                ParameterType = zcoord
            };

            vector.Component.Add(xcomp);
            vector.Component.Add(ycomp);
            vector.Component.Add(zcomp);

            // iteration data
            this.iteration = new Iteration(Guid.NewGuid(), null, null);

            var optionA = new Option(Guid.NewGuid(), null, null)
            {
                Name = "Option A", ShortName = "OptionA"
            };

            this.iteration.Option.Add(optionA);
            var optionB = new Option(Guid.NewGuid(), null, null)
            {
                Name = "Option B", ShortName = "OptionB"
            };

            this.iteration.Option.Add(optionB);

            var possibleFiniteStateList = new PossibleFiniteStateList(Guid.NewGuid(), null, null);
            var possibleFiniteState1    = new PossibleFiniteState(Guid.NewGuid(), null, null)
            {
                ShortName = "state1",
                Name      = "state 1"
            };

            possibleFiniteStateList.PossibleState.Add(possibleFiniteState1);
            var possibleFiniteState2 = new PossibleFiniteState(Guid.NewGuid(), null, null)
            {
                ShortName = "state2",
                Name      = "state 2"
            };

            possibleFiniteStateList.PossibleState.Add(possibleFiniteState2);
            possibleFiniteStateList.DefaultState = possibleFiniteState1;

            var actualFiniteStateList = new ActualFiniteStateList(Guid.NewGuid(), null, null);

            actualFiniteStateList.PossibleFiniteStateList.Add(possibleFiniteStateList);
            var actualFiniteState1 = new ActualFiniteState(Guid.NewGuid(), null, null);

            actualFiniteState1.PossibleState.Add(possibleFiniteState1);
            actualFiniteStateList.ActualState.Add(actualFiniteState1);
            var actualFiniteState2 = new ActualFiniteState(Guid.NewGuid(), null, null);

            actualFiniteState2.PossibleState.Add(possibleFiniteState2);
            actualFiniteStateList.ActualState.Add(actualFiniteState2);

            var elementDefinitionA = new ElementDefinition(Guid.NewGuid(), null, null)
            {
                Owner     = this.owner,
                ShortName = "elementdefinitionA",
                Name      = "element definition A"
            };

            this.iteration.Element.Add(elementDefinitionA);
            var parameterA1 = new Parameter(Guid.NewGuid(), null, null)
            {
                ParameterType = xcoord,
                Scale         = lengthscale,
                Owner         = this.owner
            };
            var parameterValueSetA1 = new ParameterValueSet(Guid.NewGuid(), null, null);
            var valueArrayA         = new ValueArray <string>(new List <string>()
            {
                "x"
            });

            parameterValueSetA1.ValueSwitch = ParameterSwitchKind.MANUAL;
            parameterValueSetA1.Manual      = valueArrayA;
            parameterValueSetA1.Computed    = valueArrayA;
            parameterValueSetA1.Reference   = valueArrayA;
            parameterValueSetA1.Formula     = valueArrayA;
            parameterA1.ValueSet.Add(parameterValueSetA1);
            elementDefinitionA.Parameter.Add(parameterA1);

            var parameterA2 = new Parameter(Guid.NewGuid(), null, null)
            {
                ParameterType = vector,
                Owner         = this.owner
            };

            elementDefinitionA.Parameter.Add(parameterA2);
            var parameterValueSetA2 = new ParameterValueSet(Guid.NewGuid(), null, null);

            parameterA2.ValueSet.Add(parameterValueSetA2);
            var valueArrayA2 = new ValueArray <string>(new List <string>()
            {
                "x", "y", "z"
            });

            parameterValueSetA2.ValueSwitch = ParameterSwitchKind.MANUAL;
            parameterValueSetA2.Manual      = valueArrayA2;
            parameterValueSetA2.Computed    = valueArrayA2;
            parameterValueSetA2.Reference   = valueArrayA2;
            parameterValueSetA2.Formula     = valueArrayA2;

            var parameterA3 = new Parameter(Guid.NewGuid(), null, null)
            {
                ParameterType     = xcoord,
                Scale             = lengthscale,
                Owner             = this.owner,
                IsOptionDependent = true,
            };

            elementDefinitionA.Parameter.Add(parameterA3);
            var parameterValueSetA3OptionA = new ParameterValueSet(Guid.NewGuid(), null, null)
            {
                ActualOption = optionA
            };
            var valueArrayA3OptionA = new ValueArray <string>(new List <string> {
                "x"
            });

            parameterValueSetA3OptionA.Manual    = valueArrayA3OptionA;
            parameterValueSetA3OptionA.Reference = valueArrayA3OptionA;
            parameterValueSetA3OptionA.Computed  = valueArrayA3OptionA;
            parameterValueSetA3OptionA.Formula   = valueArrayA3OptionA;
            parameterA3.ValueSet.Add(parameterValueSetA3OptionA);
            var parameterValueSetA3OptionB = new ParameterValueSet(Guid.NewGuid(), null, null)
            {
                ActualOption = optionB
            };
            var valueArrayA3OptionB = new ValueArray <string>(new List <string>()
            {
                "x"
            });

            parameterValueSetA3OptionB.Manual    = valueArrayA3OptionB;
            parameterValueSetA3OptionB.Reference = valueArrayA3OptionB;
            parameterValueSetA3OptionB.Computed  = valueArrayA3OptionB;
            parameterValueSetA3OptionB.Formula   = valueArrayA3OptionB;
            parameterA3.ValueSet.Add(parameterValueSetA3OptionB);

            var processedValueSets = new Dictionary <Guid, ProcessedValueSet>();

            var assembler = new ParameterSheetRowAssembler(this.iteration, this.owner);

            assembler.Assemble(processedValueSets);
            this.excelRows.AddRange(assembler.ExcelRows);
        }
        public void Setup()
        {
            this.securityContext = new Mock <ISecurityContext>();
            this.actualFiniteStateListService         = new Mock <IActualFiniteStateListService>();
            this.actualFiniteStateService             = new Mock <IActualFiniteStateService>();
            this.possibleFiniteStateListslService     = new Mock <IPossibleFiniteStateListService>();
            this.parameterValueSetService             = new Mock <IParameterValueSetService>();
            this.parameterOverrideValueSetService     = new Mock <IParameterOverrideValueSetService>();
            this.parameterSubscriptionValueSetService = new Mock <IParameterSubscriptionValueSetService>();
            this.parameterService             = new Mock <IParameterService>();
            this.parameterOverrideService     = new Mock <IParameterOverrideService>();
            this.parameterSubscriptionService = new Mock <IParameterSubscriptionService>();
            this.iterationService             = new Mock <IIterationService>();
            this.defaultValueArrayFactory     = new Mock <IDefaultValueArrayFactory>();
            this.parameterUpdateService       = new StateDependentParameterUpdateService();
            this.finateTrategyLogicService    = new Mock <IFiniteStateLogicService>();

            this.sideEffect.StateDependentParameterUpdateService = this.parameterUpdateService;

            this.parameterUpdateService.ParameterValueSetService             = this.parameterValueSetService.Object;
            this.parameterUpdateService.ParameterService                     = this.parameterService.Object;
            this.parameterUpdateService.ParameterOverrideService             = this.parameterOverrideService.Object;
            this.parameterUpdateService.ParameterSubscriptionService         = this.parameterSubscriptionService.Object;
            this.parameterUpdateService.ParameterOverrideValueSetService     = this.parameterOverrideValueSetService.Object;
            this.parameterUpdateService.ParameterSubscriptionValueSetService = this.parameterSubscriptionValueSetService.Object;

            this.iteration = new Iteration(Guid.NewGuid(), 1);
            this.option1   = new Option(Guid.NewGuid(), 1);

            this.iteration.Option.Add(new OrderedItem {
                K = 1, V = this.option1.Iid.ToString()
            });

            this.psl1 = new PossibleFiniteStateList(Guid.NewGuid(), 1);
            this.psl2 = new PossibleFiniteStateList(Guid.NewGuid(), 1);

            this.ps11 = new PossibleFiniteState(Guid.NewGuid(), 1);
            this.ps12 = new PossibleFiniteState(Guid.NewGuid(), 1);

            this.ps21 = new PossibleFiniteState(Guid.NewGuid(), 1);
            this.ps22 = new PossibleFiniteState(Guid.NewGuid(), 1);

            this.asl1 = new ActualFiniteStateList(Guid.NewGuid(), 1);
            this.asl2 = new ActualFiniteStateList(Guid.NewGuid(), 1);

            this.iteration.PossibleFiniteStateList.Add(this.psl1.Iid);
            this.iteration.PossibleFiniteStateList.Add(this.psl2.Iid);

            this.iteration.ActualFiniteStateList.Add(this.asl1.Iid);
            this.iteration.ActualFiniteStateList.Add(this.asl2.Iid);

            this.psl1.PossibleState.Add(new OrderedItem {
                K = 1, V = this.ps11.Iid.ToString()
            });
            this.psl1.PossibleState.Add(new OrderedItem {
                K = 2, V = this.ps12.Iid.ToString()
            });
            this.psl2.PossibleState.Add(new OrderedItem {
                K = 1, V = this.ps21.Iid.ToString()
            });
            this.psl2.PossibleState.Add(new OrderedItem {
                K = 2, V = this.ps22.Iid.ToString()
            });

            this.asl1.PossibleFiniteStateList.Add(new OrderedItem {
                K = 1, V = this.psl1.Iid.ToString()
            });
            this.asl1.PossibleFiniteStateList.Add(new OrderedItem {
                K = 2, V = this.psl2.Iid.ToString()
            });

            // initializes actual states actual states
            this.as11 = new ActualFiniteState(Guid.NewGuid(), 1);
            this.as11.PossibleState.Add(this.ps11.Iid);
            this.as11.PossibleState.Add(this.ps21.Iid);

            this.as12 = new ActualFiniteState(Guid.NewGuid(), 1);
            this.as12.PossibleState.Add(this.ps11.Iid);
            this.as12.PossibleState.Add(this.ps22.Iid);

            this.asl1.ActualState.Add(this.as11.Iid);
            this.asl1.ActualState.Add(this.as12.Iid);

            this.asl2.PossibleFiniteStateList.Add(new OrderedItem {
                K = 1, V = this.psl2.Iid.ToString()
            });
            this.as21 = new ActualFiniteState(Guid.NewGuid(), 1);
            this.as21.PossibleState.Add(this.ps21.Iid);
            this.as22 = new ActualFiniteState(Guid.NewGuid(), 1);
            this.as22.PossibleState.Add(this.ps22.Iid);

            this.asl2.ActualState.Add(this.as21.Iid);
            this.asl2.ActualState.Add(this.as22.Iid);

            this.possibleFiniteStateListslService.Setup(
                x => x.GetShallow(this.transaction, this.partition, It.IsAny <IEnumerable <Guid> >(), this.securityContext.Object))
            .Returns(new List <Thing> {
                this.psl1, this.psl2
            });

            this.actualFiniteStateListService.Setup(
                x => x.GetShallow(this.transaction, this.partition, null, this.securityContext.Object))
            .Returns(new List <Thing> {
                this.asl1, this.asl2
            });

            this.actualFiniteStateService.Setup(
                x => x.GetShallow(this.transaction, this.partition, It.IsAny <IEnumerable <Guid> >(), this.securityContext.Object))
            .Returns(new List <Thing> {
                this.as11, this.as12
            });

            this.iterationService.Setup(x => x.GetShallow(this.transaction, this.partition, null, this.securityContext.Object))
            .Returns(new List <Thing> {
                this.iteration
            });

            this.parameter1 = new Parameter(Guid.NewGuid(), 1);
            this.parameter1.StateDependence = this.asl1.Iid;

            this.parameter2 = new Parameter(Guid.NewGuid(), 1);
            this.parameter2.StateDependence   = this.asl1.Iid;
            this.parameter2.IsOptionDependent = true;

            this.parameterOverride1           = new ParameterOverride(Guid.NewGuid(), 1);
            this.parameterOverride1.Parameter = this.parameter1.Iid;

            this.parameterOverride2           = new ParameterOverride(Guid.NewGuid(), 1);
            this.parameterOverride2.Parameter = this.parameter2.Iid;

            this.parameterSubscription1 = new ParameterSubscription(Guid.NewGuid(), 1);
            this.parameterSubscription2 = new ParameterSubscription(Guid.NewGuid(), 1);

            this.parameter1.ParameterSubscription.Add(this.parameterSubscription1.Iid);
            this.parameterOverride2.ParameterSubscription.Add(this.parameterSubscription2.Iid);

            this.pvs11 = new ParameterValueSet(Guid.NewGuid(), 1)
            {
                Manual      = new ValueArray <string>(this.initValue),
                Computed    = new ValueArray <string>(this.initValue),
                Reference   = new ValueArray <string>(this.initValue),
                Published   = new ValueArray <string>(this.initValue),
                Formula     = new ValueArray <string>(this.initValue),
                ValueSwitch = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
            };
            this.pvs12 = new ParameterValueSet(Guid.NewGuid(), 1)
            {
                Manual      = new ValueArray <string>(this.initValue),
                Computed    = new ValueArray <string>(this.initValue),
                Reference   = new ValueArray <string>(this.initValue),
                Published   = new ValueArray <string>(this.initValue),
                Formula     = new ValueArray <string>(this.initValue),
                ValueSwitch = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
            };
            this.pvs21 = new ParameterValueSet(Guid.NewGuid(), 1)
            {
                Manual      = new ValueArray <string>(this.initValue),
                Computed    = new ValueArray <string>(this.initValue),
                Reference   = new ValueArray <string>(this.initValue),
                Published   = new ValueArray <string>(this.initValue),
                Formula     = new ValueArray <string>(this.initValue),
                ValueSwitch = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
            };
            this.pvs22 = new ParameterValueSet(Guid.NewGuid(), 1)
            {
                Manual      = new ValueArray <string>(this.initValue),
                Computed    = new ValueArray <string>(this.initValue),
                Reference   = new ValueArray <string>(this.initValue),
                Published   = new ValueArray <string>(this.initValue),
                Formula     = new ValueArray <string>(this.initValue),
                ValueSwitch = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
            };

            this.povs11 = new ParameterOverrideValueSet(Guid.NewGuid(), 1)
            {
                Manual            = new ValueArray <string>(this.initValue),
                Computed          = new ValueArray <string>(this.initValue),
                Reference         = new ValueArray <string>(this.initValue),
                Published         = new ValueArray <string>(this.initValue),
                Formula           = new ValueArray <string>(this.initValue),
                ValueSwitch       = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
                ParameterValueSet = this.pvs11.Iid
            };

            this.povs12 = new ParameterOverrideValueSet(Guid.NewGuid(), 1)
            {
                Manual            = new ValueArray <string>(this.initValue),
                Computed          = new ValueArray <string>(this.initValue),
                Reference         = new ValueArray <string>(this.initValue),
                Published         = new ValueArray <string>(this.initValue),
                Formula           = new ValueArray <string>(this.initValue),
                ValueSwitch       = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
                ParameterValueSet = this.pvs11.Iid
            };
            this.povs21 = new ParameterOverrideValueSet(Guid.NewGuid(), 1)
            {
                Manual            = new ValueArray <string>(this.initValue),
                Computed          = new ValueArray <string>(this.initValue),
                Reference         = new ValueArray <string>(this.initValue),
                Published         = new ValueArray <string>(this.initValue),
                Formula           = new ValueArray <string>(this.initValue),
                ValueSwitch       = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
                ParameterValueSet = this.pvs11.Iid
            };
            this.povs22 = new ParameterOverrideValueSet(Guid.NewGuid(), 1)
            {
                Manual            = new ValueArray <string>(this.initValue),
                Computed          = new ValueArray <string>(this.initValue),
                Reference         = new ValueArray <string>(this.initValue),
                Published         = new ValueArray <string>(this.initValue),
                Formula           = new ValueArray <string>(this.initValue),
                ValueSwitch       = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
                ParameterValueSet = this.pvs11.Iid
            };

            this.psvs11 = new ParameterSubscriptionValueSet(Guid.NewGuid(), 1)
            {
                Manual             = new ValueArray <string>(this.initValue),
                ValueSwitch        = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
                SubscribedValueSet = this.pvs11.Iid
            };
            this.psvs12 = new ParameterSubscriptionValueSet(Guid.NewGuid(), 1)
            {
                Manual             = new ValueArray <string>(this.initValue),
                ValueSwitch        = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
                SubscribedValueSet = this.pvs12.Iid
            };
            this.psvs21 = new ParameterSubscriptionValueSet(Guid.NewGuid(), 1)
            {
                Manual             = new ValueArray <string>(this.initValue),
                ValueSwitch        = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
                SubscribedValueSet = this.povs21.Iid
            };
            this.psvs22 = new ParameterSubscriptionValueSet(Guid.NewGuid(), 1)
            {
                Manual             = new ValueArray <string>(this.initValue),
                ValueSwitch        = CDP4Common.EngineeringModelData.ParameterSwitchKind.REFERENCE,
                SubscribedValueSet = this.povs22.Iid
            };

            this.parameter1.ValueSet.Add(this.pvs11.Iid);
            this.parameter1.ValueSet.Add(this.pvs12.Iid);
            this.parameter2.ValueSet.Add(this.pvs21.Iid);
            this.parameter2.ValueSet.Add(this.pvs22.Iid);

            this.parameterOverride1.ValueSet.Add(this.povs11.Iid);
            this.parameterOverride1.ValueSet.Add(this.povs12.Iid);
            this.parameterOverride2.ValueSet.Add(this.povs21.Iid);
            this.parameterOverride2.ValueSet.Add(this.povs22.Iid);

            this.parameterSubscription1.ValueSet.Add(this.psvs11.Iid);
            this.parameterSubscription1.ValueSet.Add(this.psvs12.Iid);
            this.parameterSubscription2.ValueSet.Add(this.psvs21.Iid);
            this.parameterSubscription2.ValueSet.Add(this.psvs22.Iid);

            this.parameterValueSetService.Setup(
                x => x.GetShallow(this.transaction, this.partition, this.parameter1.ValueSet, this.securityContext.Object))
            .Returns(new List <Thing> {
                this.pvs11, this.pvs12
            });
            this.parameterValueSetService.Setup(
                x => x.GetShallow(this.transaction, this.partition, this.parameter2.ValueSet, this.securityContext.Object))
            .Returns(new List <Thing> {
                this.pvs21, this.pvs22
            });

            this.parameterOverrideValueSetService.Setup(
                x =>
                x.GetShallow(this.transaction, this.partition, this.parameterOverride1.ValueSet,
                             this.securityContext.Object))
            .Returns(new List <Thing> {
                this.povs11, this.povs12
            });
            this.parameterOverrideValueSetService.Setup(
                x =>
                x.GetShallow(this.transaction, this.partition, this.parameterOverride2.ValueSet,
                             this.securityContext.Object))
            .Returns(new List <Thing> {
                this.povs21, this.povs22
            });

            this.parameterSubscriptionValueSetService.Setup(
                x =>
                x.GetShallow(this.transaction, this.partition, this.parameterSubscription1.ValueSet,
                             this.securityContext.Object))
            .Returns(new List <Thing> {
                this.psvs11, this.psvs12
            });
            this.parameterSubscriptionValueSetService.Setup(
                x =>
                x.GetShallow(this.transaction, this.partition, this.parameterSubscription2.ValueSet,
                             this.securityContext.Object))
            .Returns(new List <Thing> {
                this.psvs21, this.psvs22
            });

            this.parameterService.Setup(x => x.GetShallow(this.transaction, this.partition, null, this.securityContext.Object))
            .Returns(new List <Thing> {
                this.parameter1, this.parameter2
            });

            this.parameterOverrideService.Setup(x => x.GetShallow(this.transaction, this.partition, null, this.securityContext.Object))
            .Returns(new List <Thing> {
                this.parameterOverride1, this.parameterOverride2
            });

            this.parameterSubscriptionService.Setup(x => x.GetShallow(this.transaction, this.partition, null, this.securityContext.Object))
            .Returns(new List <Thing> {
                this.parameterSubscription1, this.parameterSubscription2
            });

            this.defaultValueArrayFactory.Setup(x => x.CreateDefaultValueArray(It.IsAny <Guid>())).Returns(new ValueArray <string>(new[] { "-" }));
            this.parameterUpdateService.DefaultValueSetFactory = this.defaultValueArrayFactory.Object;
            this.parameterValueSetService.Setup(x => x.DeleteConcept(this.transaction, this.partition, It.IsAny <ParameterValueSet>(), It.IsAny <Parameter>())).Returns(true);
            this.parameterOverrideValueSetService.Setup(x => x.DeleteConcept(this.transaction, this.partition, It.IsAny <ParameterOverrideValueSet>(), It.IsAny <ParameterOverride>())).Returns(true);
            this.parameterSubscriptionValueSetService.Setup(x => x.DeleteConcept(this.transaction, this.partition, It.IsAny <ParameterSubscriptionValueSet>(), It.IsAny <ParameterSubscription>())).Returns(true);
        }
        public void VerifyThatSerializationOfDtosWorks()
        {
            this.serializer = new Cdp4JsonSerializer(this.metadataprovider, new Version(1, 1, 0));

            this.engModel           = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri);
            this.book1              = new Book(Guid.NewGuid(), this.cache, this.uri);
            this.book2              = new Book(Guid.NewGuid(), this.cache, this.uri);
            this.section1           = new Section(Guid.NewGuid(), this.cache, this.uri);
            this.section1.ShortName = "SS1";

            this.engModel.Book.Add(this.book1);
            this.engModel.Book.Add(this.book2);
            this.book2.Section.Add(this.section1);

            var iteration             = new Iteration(Guid.NewGuid(), this.cache, this.uri);
            var ed                    = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri);
            var parameter             = new Parameter(Guid.NewGuid(), this.cache, this.uri);
            var parameterSubscription = new ParameterSubscription(Guid.NewGuid(), this.cache, this.uri);
            var valueset              = new ParameterValueSet(Guid.NewGuid(), this.cache, this.uri);
            var subscriptionValueset  = new ParameterSubscriptionValueSet(Guid.NewGuid(), this.cache, this.uri);
            var valuearrayvalues      = new[] { "123", "456", "789.0" };

            valueset.Manual    = new ValueArray <string>(valuearrayvalues);
            valueset.Reference = new ValueArray <string>(valuearrayvalues);
            valueset.Computed  = new ValueArray <string>(valuearrayvalues);
            valueset.Formula   = new ValueArray <string>(valuearrayvalues);
            valueset.Published = new ValueArray <string>(valuearrayvalues);

            subscriptionValueset.Manual = new ValueArray <string>(valuearrayvalues);

            this.engModel.Iteration.Add(iteration);
            iteration.Element.Add(ed);
            ed.Parameter.Add(parameter);
            parameter.ValueSet.Add(valueset);
            parameter.ParameterSubscription.Add(parameterSubscription);
            parameterSubscription.ValueSet.Add(subscriptionValueset);

            var list = new List <Dto.Thing>
            {
                this.engModel.ToDto(),
                this.book1.ToDto(),
                this.book2.ToDto(),
                this.section1.ToDto(),
                iteration.ToDto(),
                ed.ToDto(),
                parameter.ToDto(),
                parameterSubscription.ToDto(),
                valueset.ToDto(),
                subscriptionValueset.ToDto()
            };

            using (var memoryStream = new MemoryStream())
            {
                this.serializer.SerializeToStream(list, memoryStream);

                // necessary
                memoryStream.Position = 0;

                var resDtos = this.serializer.Deserialize(memoryStream).ToList();

                Assert.AreEqual(10, resDtos.Count);
                var resEngineeringModel     = resDtos.OfType <Dto.EngineeringModel>().Single();
                var resBook1                = resDtos.OfType <Dto.Book>().Single(x => x.Iid == this.book1.Iid);
                var resBook2                = resDtos.OfType <Dto.Book>().Single(x => x.Iid == this.book2.Iid);
                var resSection              = resDtos.OfType <Dto.Section>().Single();
                var resSubscriptionValueset = resDtos.OfType <Dto.ParameterSubscriptionValueSet>().Single();

                Assert.AreEqual(resSection.ShortName, this.section1.ShortName);
                Assert.IsTrue(resBook2.Section.Any(x => x.V.ToString() == this.section1.Iid.ToString()));
                Assert.IsTrue(resEngineeringModel.Book.Any(x => x.V.ToString() == this.book1.Iid.ToString()));
                Assert.IsTrue(resEngineeringModel.Book.Any(x => x.V.ToString() == this.book2.Iid.ToString()));

                Assert.AreEqual(resSubscriptionValueset.Manual, new ValueArray <string>(valuearrayvalues));
            }
        }