From 03b5bf5894faa875a1c8c7df2d5be5e773eaa6e5 Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Date: Fri, 20 Dec 2024 22:57:51 +0530 Subject: [PATCH] GSAGH-550: test modified --- GsaGH/Helpers/Assembly/ModelAssembly.cs | 5 +- .../Parameters/4_Analysis/GsaAnalysisTask.cs | 9 ++- .../4_Analysis/GsaAnalysisTaskTest.cs | 67 ++++++++++--------- 3 files changed, 45 insertions(+), 36 deletions(-) diff --git a/GsaGH/Helpers/Assembly/ModelAssembly.cs b/GsaGH/Helpers/Assembly/ModelAssembly.cs index f5174f214..2f98387ed 100644 --- a/GsaGH/Helpers/Assembly/ModelAssembly.cs +++ b/GsaGH/Helpers/Assembly/ModelAssembly.cs @@ -251,11 +251,8 @@ private void CheckIfModelIsEmpty() { private void ConvertAndAssembleAnalysisTasks(List analysisTasks) { // Set Analysis Tasks in model if (analysisTasks != null) { - ReadOnlyDictionary existingTasks = _model.AnalysisTasks(); foreach (GsaAnalysisTask task in analysisTasks) { - if (!existingTasks.Keys.Contains(task.Id)) { - TaskHelper.ImportAnalysisTask(task, ref _model); - } + task.Id = TaskHelper.ImportAnalysisTask(task, ref _model); } } } diff --git a/GsaGH/Parameters/4_Analysis/GsaAnalysisTask.cs b/GsaGH/Parameters/4_Analysis/GsaAnalysisTask.cs index fb40f8ae0..a9b770b0a 100644 --- a/GsaGH/Parameters/4_Analysis/GsaAnalysisTask.cs +++ b/GsaGH/Parameters/4_Analysis/GsaAnalysisTask.cs @@ -24,6 +24,14 @@ public GsaAnalysisTask() { internal GsaAnalysisTask(int id, Model model) { Id = id; ApiTask = model.AnalysisTasks()[Id]; + CreateCases(model); + } + + internal GsaAnalysisTask(AnalysisTask task, Model model) { + ApiTask = task; + CreateCases(model); + } + private void CreateCases(Model model) { ReadOnlyDictionary analysisCases = model.AnalysisCases(); foreach (int caseId in ApiTask.Cases) { if (analysisCases.ContainsKey(caseId)) { @@ -32,7 +40,6 @@ internal GsaAnalysisTask(int id, Model model) { } } } - public override string ToString() { return (Id > 0 ? $"ID:{Id} " : string.Empty) + $"'{ApiTask.Name}' {ApiTask.Type}".Replace("_", " ") .TrimSpaces(); diff --git a/GsaGHTests/1_BaseParameters/4_Analysis/GsaAnalysisTaskTest.cs b/GsaGHTests/1_BaseParameters/4_Analysis/GsaAnalysisTaskTest.cs index 4b8eb2085..cc170934f 100644 --- a/GsaGHTests/1_BaseParameters/4_Analysis/GsaAnalysisTaskTest.cs +++ b/GsaGHTests/1_BaseParameters/4_Analysis/GsaAnalysisTaskTest.cs @@ -34,40 +34,40 @@ private List GsaAnalysisTasksFromSeedModel(bool withCase = fals return new List() { new GsaAnalysisTask(id, gsaSeedModel.ApiModel) }; } + private GsaAnalysisTask CreateTask() { + return new GsaAnalysisTask(AnalysisTaskFactory.CreateStaticAnalysisTask("static"), _model.ApiModel); + } + [Fact] public void WhenNoCasesProvidedShouldAddDefaultCaseCreatedFromLoadCase() { - GsaAPI.Model apiModel = _model.ApiModel; - TaskHelper.ImportAnalysisTask(new GsaAnalysisTask(apiModel.AddAnalysisTask(), apiModel), ref apiModel); + TaskHelper.ImportAnalysisTask(CreateTask(), ref _model); AnalysisTask outTask = _model.ApiModel.AnalysisTasks().Last().Value; //Gsa model has load case at Row(Or Id) 1 and 3 Assert.Equal(1, outTask.Cases[0]); Assert.Equal(3, outTask.Cases[1]); } - //[Fact] - //public void AnalysisCasesAreAppendedWhenAnalysisCaseIsAlreadyAttachedToAnotherTask() { - // GsaAPI.Model apiModel = _model.ApiModel; - // int taskId = apiModel.AddAnalysisTask(); - // //this will create analysis case with Id = 1 - // apiModel.AddAnalysisCaseToTask(taskId, "AnyName", "L1"); - // int analysisCaseId = apiModel.AnalysisTasks()[taskId].Cases[0]; - // Assert.Equal(1, analysisCaseId); - - // //now create another task - // var newTask = new GsaAnalysisTask(apiModel.AddAnalysisTask(), apiModel); - // //and assign same analysis case Id - // newTask.Cases.Add(new GsaAnalysisCase() { - // Id = analysisCaseId, - // ApiCase = new AnalysisCase("AnyName", "L1") - // }); - - // ReadOnlyDictionary ttasks = apiModel.AnalysisTasks(); - // TaskHelper.AddAnalysisTask(newTask, ref apiModel); - // ttasks = apiModel.AnalysisTasks(); - // Assert.Equal(2, ttasks.Keys.Max()); - // int newAnalysCaseId = apiModel.AnalysisTasks()[newTask.Id].Cases[0]; - // Assert.Equal(analysisCaseId + 1, newAnalysCaseId); - //} + [Fact] + public void AnalysisCasesAreAppendedWhenAnalysisCaseIsAlreadyAttachedToAnotherTask() { + int taskId = _model.ApiModel.AddAnalysisTask(); + //this will create analysis case with Id = 1 + _model.ApiModel.AddAnalysisCaseToTask(taskId, "AnyName", "L1"); + int analysisCaseId = _model.ApiModel.AnalysisTasks()[taskId].Cases[0]; + Assert.Equal(1, analysisCaseId); + + //now create another task + GsaAnalysisTask newTask = CreateTask(); + //and assign same analysis case Id + newTask.Cases.Add(new GsaAnalysisCase() { + Id = analysisCaseId, + ApiCase = new AnalysisCase("AnyName", "L1") + }); + + int newTaskId = TaskHelper.ImportAnalysisTask(newTask, ref _model); + Assert.Equal(2, _model.ApiModel.AnalysisTasks().Keys.Max()); + int newAnalysCaseId = _model.ApiModel.AnalysisTasks()[newTaskId].Cases[0]; + Assert.Equal(analysisCaseId + 1, newAnalysCaseId); + } [Fact] public void ShouldCreateDefaultTask() { @@ -78,22 +78,27 @@ public void ShouldCreateDefaultTask() { [Fact] public void ShouldCreateDefaultCaseWhenCaseCountIsZero() { GsaAPI.Model apiModel = _model.ApiModel; - TaskHelper.ImportAnalysisTask(GsaAnalysisTasksFromSeedModel().First(), ref apiModel); + TaskHelper.ImportAnalysisTask(CreateTask(), ref _model); Assert.Equal(2, apiModel.AnalysisTasks().First().Value.Cases.Count); } [Fact] public void AnalysisCasesWillBeEmptyInAbsenceOfLoadCase() { var noLoadModel = new GsaModel(); - GsaAPI.Model apiModel = noLoadModel.ApiModel; - TaskHelper.ImportAnalysisTask(GsaAnalysisTasksFromSeedModel().First(), ref apiModel); - Assert.Empty(apiModel.AnalysisTasks().First().Value.Cases); + TaskHelper.ImportAnalysisTask(CreateTask(), ref noLoadModel); + Assert.Empty(noLoadModel.ApiModel.AnalysisTasks().First().Value.Cases); + } + + [Fact] + public void NullTaskWillNotBeImported() { + int TaskId = TaskHelper.ImportAnalysisTask(new GsaAnalysisTask(), ref _model); + Assert.Equal(-1, TaskId); + Assert.Empty(_model.ApiModel.AnalysisTasks()); } [Fact] public void EmptyConstructorTest() { var task = new GsaAnalysisTask(); - Assert.Equal(0, task.Id); Assert.Null(task.ApiTask); Assert.Empty(task.Cases);