diff --git a/GsaGH/Components/4_Analysis/CreateModalDynamicParameter.cs b/GsaGH/Components/4_Analysis/CreateModalDynamicParameter.cs index 975aa9e7a..9c5edfdfb 100644 --- a/GsaGH/Components/4_Analysis/CreateModalDynamicParameter.cs +++ b/GsaGH/Components/4_Analysis/CreateModalDynamicParameter.cs @@ -130,30 +130,15 @@ public override void SetSelected(int i, int j) { } private static ModeCalculationMethod GetModeStrategy(string name) { - IEnumerable items = _modeCalculationMethod.Where(x => x.Value.Equals(name)).Select(x => x.Key); - if (items.Any()) { - return items.First(); - } else { - throw new ArgumentException("Unable to convert " + name + " to mode calculation strategy"); - } + return _modeCalculationMethod.Where(x => x.Value.Equals(name)).Select(x => x.Key).First(); } private static Direction GetDirection(string name) { - IEnumerable items = _massDirection.Where(x => x.Value.Equals(name)).Select(x => x.Key); - if (items.Any()) { - return items.First(); - } else { - throw new ArgumentException("Unable to convert " + name + " to direction"); - } + return _massDirection.Where(x => x.Value.Equals(name)).Select(x => x.Key).First(); } private static ModalMassOption GetMassOption(string name) { - IEnumerable items = _massOptions.Where(x => x.Value.Equals(name)).Select(x => x.Key); - if (items.Any()) { - return items.First(); - } else { - throw new ArgumentException("Unable to convert " + name + " to mass option"); - } + return _massOptions.Where(x => x.Value.Equals(name)).Select(x => x.Key).First(); } private void UpdateParameters(ModeCalculationMethod modeMethod) { @@ -171,7 +156,7 @@ private void UpdateParameters(ModeCalculationMethod modeMethod) { } private void UnregisterParameters() { - for (int i = Params.Input.Count - 1; i > 0; i--) { + for (int i = Params.Input.Count - 1; i > -1; i--) { Params.UnregisterInputParameter(Params.Input[i], true); } } diff --git a/GsaGH/Parameters/4_Analysis/ModalDynamicAnalysis.cs b/GsaGH/Parameters/4_Analysis/GsaModalDynamicAnalysis.cs similarity index 100% rename from GsaGH/Parameters/4_Analysis/ModalDynamicAnalysis.cs rename to GsaGH/Parameters/4_Analysis/GsaModalDynamicAnalysis.cs diff --git a/GsaGH/Parameters/4_Analysis/ModalDynamicAnalysisGoo.cs b/GsaGH/Parameters/4_Analysis/GsaModalDynamicAnalysisGoo.cs similarity index 100% rename from GsaGH/Parameters/4_Analysis/ModalDynamicAnalysisGoo.cs rename to GsaGH/Parameters/4_Analysis/GsaModalDynamicAnalysisGoo.cs diff --git a/GsaGH/Parameters/4_Analysis/ModalDynamicAnalysisParameter.cs b/GsaGH/Parameters/4_Analysis/GsaModalDynamicAnalysisParameter.cs similarity index 93% rename from GsaGH/Parameters/4_Analysis/ModalDynamicAnalysisParameter.cs rename to GsaGH/Parameters/4_Analysis/GsaModalDynamicAnalysisParameter.cs index ce852474c..1af64e761 100644 --- a/GsaGH/Parameters/4_Analysis/ModalDynamicAnalysisParameter.cs +++ b/GsaGH/Parameters/4_Analysis/GsaModalDynamicAnalysisParameter.cs @@ -32,8 +32,6 @@ protected override GsaModalDynamicGoo PreferredCast(object data) { switch (data) { case GsaAnalysisTaskGoo analysisTask: return new GsaModalDynamicGoo(new GsaModalDynamic(analysisTask.Value.ApiTask)); - case GsaModalDynamicGoo dynamicAnalysis: - return new GsaModalDynamicGoo(dynamicAnalysis.Value); default: this.AddRuntimeError($"Data conversion failed from {data.GetTypeName()} to ModalDynamicAnalysis parameter"); return new GsaModalDynamicGoo(null); diff --git a/GsaGHTests/2_GooWrappers/PersistentParameters/GsaModalDynamicParameter.cs b/GsaGHTests/2_GooWrappers/PersistentParameters/GsaModalDynamicParameter.cs new file mode 100644 index 000000000..e686eb4b3 --- /dev/null +++ b/GsaGHTests/2_GooWrappers/PersistentParameters/GsaModalDynamicParameter.cs @@ -0,0 +1,57 @@ + +using System.Linq; + +using Grasshopper.Kernel; + +using GsaGH; +using GsaGH.Parameters; +using GsaGH.Parameters.Enums; + +using GsaGHTests.Components.Analysis; +using GsaGHTests.Helpers; + +using OasysGH.Components; + +using Xunit; + +namespace GsaGHTests.GooWrappers { + [Collection("GrasshopperFixture collection")] + public class GsaModalDynamicParameterTests { + + [Fact] + public void GsaModalDynamicParameterPreferredCastTest() { + GH_OasysComponent comp = CreateAnalysisTaskTests.CreateAnalysisTaskComponent(ModeCalculationMethod.FrquencyRange); + object output = ComponentTestHelper.GetOutput(comp); + var param = new GsaModalDynamicParameter(); + param.AddVolatileData(new Grasshopper.Kernel.Data.GH_Path(0), 0, output); + Assert.NotNull(param.VolatileData.AllData(false).First()); + Assert.Contains("FrquencyRange", ComponentTestHelper.GetOutput(param).ToString()); + } + + [Fact] + public void ToStringTest() { + GH_OasysComponent comp = CreateAnalysisTaskTests.CreateAnalysisTaskComponent(ModeCalculationMethod.FrquencyRange); + object output = ComponentTestHelper.GetOutput(comp); + var param = new GsaModalDynamicParameter(); + param.AddVolatileData(new Grasshopper.Kernel.Data.GH_Path(0), 0, output); + Assert.NotNull(param.VolatileData.AllData(false).First()); + } + + [Fact] + public void GsaModalDynamicParameterPreferredCastErrorTest() { + int i = 0; + var param = new GsaModalDynamicParameter(); + param.AddVolatileData(new Grasshopper.Kernel.Data.GH_Path(0), 0, i); + Assert.False(param.VolatileData.AllData(false).First().IsValid); + Assert.Single(param.RuntimeMessages(GH_RuntimeMessageLevel.Error)); + } + + [Fact] + public void ParameterThenPluginInfoValueShouldBeValid() { + GH_OasysComponent comp = CreateModalDynamicParameterByFrquencyRangeTest.ComponentMother(); + var output = (GsaModalDynamicGoo)ComponentTestHelper.GetOutput(comp); + Assert.Equal(PluginInfo.Instance, output.PluginInfo); + } + + } +} diff --git a/GsaGHTests/3_Components/4_Analysis/CreateModalDynamicParameterTests.cs b/GsaGHTests/3_Components/4_Analysis/CreateModalDynamicParameterTests.cs index fb060029f..99da686e8 100644 --- a/GsaGHTests/3_Components/4_Analysis/CreateModalDynamicParameterTests.cs +++ b/GsaGHTests/3_Components/4_Analysis/CreateModalDynamicParameterTests.cs @@ -160,7 +160,7 @@ private void PrepareComponent(ModalMassOption massOption, Direction direction) { _modeCalculationStrategy = _modalDynamicAnalysis.ModeCalculationStrategy as ModeCalculationStrategyByFrequency; } - public static GH_OasysComponent ComponentMother(ModalMassOption massOption, Direction direction) { + public static GH_OasysComponent ComponentMother(ModalMassOption massOption= ModalMassOption.LumpMassAtNode, Direction direction= Direction.Y) { var comp = new CreateModalDynamicParameter(); comp.CreateAttributes(); comp.SetSelected(0, 1);