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]); } }
/// <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); }
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); }
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); }
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)); }
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()); }
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); }
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); }
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" }
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); }
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); }
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); }
/// <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)); }
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); }
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)); } }