Skip to content

Commit 934f564

Browse files
author
Smiechowski Nathanael
authored
Merge pull request #57 from RHEAGROUP/development
1.2.0
2 parents a3f7993 + c76859e commit 934f564

29 files changed

Lines changed: 1854 additions & 251 deletions

DEHPMatlab.Tests/DstController/DstControllerTestFixture.cs

Lines changed: 193 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ namespace DEHPMatlab.Tests.DstController
5050
using DEHPCommon.UserInterfaces.Views;
5151

5252
using DEHPMatlab.DstController;
53+
using DEHPMatlab.Enumerator;
5354
using DEHPMatlab.Services.MappingConfiguration;
5455
using DEHPMatlab.Services.MatlabConnector;
5556
using DEHPMatlab.Services.MatlabParser;
@@ -183,9 +184,9 @@ public void VerifyLoadAndRunScript()
183184
this.dstController.MatlabWorkspaceInputRowViewModels.Add(new MatlabWorkspaceRowViewModel("RE", 0.5));
184185
this.dstController.LoadScript(Path.Combine(TestContext.CurrentContext.TestDirectory, "Resources", "GNC_Lab4.m"));
185186
Assert.IsTrue(this.dstController.IsScriptLoaded);
186-
Assert.AreEqual(6, this.dstController.MatlabWorkspaceInputRowViewModels.Count);
187+
Assert.AreEqual(82, this.dstController.MatlabWorkspaceInputRowViewModels.Count);
187188

188-
Assert.AreEqual(6370, this.dstController.MatlabWorkspaceInputRowViewModels
189+
Assert.AreEqual(-6370, this.dstController.MatlabWorkspaceInputRowViewModels
189190
.First(x => x.Name == "RE").ActualValue);
190191

191192
this.dstController.MatlabAllWorkspaceRowViewModels.Add(new MatlabWorkspaceRowViewModel("a", 45));
@@ -194,13 +195,21 @@ public void VerifyLoadAndRunScript()
194195
Assert.AreEqual(45, this.dstController.MatlabAllWorkspaceRowViewModels
195196
.First(x => x.Name == "a").ActualValue);
196197

198+
var arrayVariableElement = this.dstController.MatlabAllWorkspaceRowViewModels.First(x => !string.IsNullOrEmpty(x.ParentName));
199+
200+
arrayVariableElement.ActualValue = "45";
201+
Assert.AreNotEqual("45", arrayVariableElement.ActualValue);
202+
203+
arrayVariableElement.ActualValue = 45;
204+
Assert.AreEqual(45, arrayVariableElement.ActualValue);
205+
197206
this.dstController.MatlabAllWorkspaceRowViewModels.Add(this.dstController.MatlabWorkspaceInputRowViewModels[1]);
198207
this.dstController.MatlabWorkspaceInputRowViewModels[1].ActualValue = 0;
199208
Assert.IsTrue(string.IsNullOrEmpty(this.dstController.MatlabWorkspaceInputRowViewModels[1].ParentName));
200209
this.matlabConnector.Verify(x => x.ExecuteFunction(It.IsAny<string>()), Times.Exactly(3));
201210

202211
this.matlabConnector.Verify(x => x.PutVariable(It.IsAny<MatlabWorkspaceRowViewModel>()),
203-
Times.Exactly(24));
212+
Times.Exactly(27));
204213

205214
Assert.DoesNotThrow(() => this.dstController.UnloadScript());
206215
Assert.IsTrue(string.IsNullOrEmpty(this.dstController.LoadedScriptName));
@@ -238,11 +247,17 @@ public void VerifyMappingFromHubToDst()
238247
.Returns(new List<ParameterToMatlabVariableMappingRowViewModel>
239248
{
240249
new()
250+
{
251+
SelectedParameter = new Parameter()
252+
}
241253
});
242254

243255
this.dstController.Map(new List<ParameterToMatlabVariableMappingRowViewModel>
244256
{
245257
new()
258+
{
259+
SelectedParameter = new Parameter()
260+
}
246261
});
247262

248263
Assert.AreEqual(1, this.dstController.HubMapResult.Count);
@@ -475,5 +490,180 @@ public void VerifyLoadMapping()
475490

476491
Assert.DoesNotThrow(() => this.dstController.LoadMapping());
477492
}
493+
494+
[Test]
495+
public void VerifySampledFunctionTransferToDst()
496+
{
497+
var independentParameter = new SimpleQuantityKind()
498+
{
499+
Name = "time"
500+
};
501+
502+
var dependentParameter = new SpecializedQuantityKind()
503+
{
504+
Name = "position"
505+
};
506+
507+
var sampledFunction = new SampledFunctionParameterType()
508+
{
509+
IndependentParameterType =
510+
{
511+
new IndependentParameterTypeAssignment()
512+
{
513+
ParameterType = independentParameter
514+
}
515+
},
516+
DependentParameterType =
517+
{
518+
new DependentParameterTypeAssignment()
519+
{
520+
ParameterType = dependentParameter
521+
}
522+
}
523+
};
524+
525+
var parameter = new Parameter()
526+
{
527+
ParameterType = sampledFunction,
528+
Container = new ElementDefinition(new Guid(), null, null),
529+
ValueSet =
530+
{
531+
new ParameterValueSet
532+
{
533+
Computed = new ValueArray<string>(new []{"1", "2", "3", "4", "5", "6"})
534+
}
535+
}
536+
};
537+
538+
var arrayValue = new double[2, 2];
539+
540+
for (var rowIndex = 0; rowIndex < arrayValue.GetLength(0); rowIndex++)
541+
{
542+
for (var columnIndex = 0; columnIndex < arrayValue.GetLength(1); columnIndex++)
543+
{
544+
arrayValue.SetValue(0, rowIndex,columnIndex);
545+
}
546+
}
547+
548+
var variable = new MatlabWorkspaceRowViewModel("anArrayVariable", arrayValue)
549+
{
550+
Identifier = "anArrayVariable-a"
551+
};
552+
553+
this.dstController.MatlabAllWorkspaceRowViewModels.Clear();
554+
555+
this.dstController.MatlabWorkspaceInputRowViewModels.AddRange(variable.UnwrapVariableRowViewModels());
556+
variable = this.dstController.MatlabWorkspaceInputRowViewModels.First(x => x.Name == "anArrayVariable");
557+
558+
variable.SampledFunctionParameterParameterAssignementRows[0].SelectedParameterTypeAssignment = sampledFunction.IndependentParameterType[0];
559+
variable.SampledFunctionParameterParameterAssignementRows[1].SelectedParameterTypeAssignment = sampledFunction.DependentParameterType[0];
560+
561+
var mappedElement = new ParameterToMatlabVariableMappingRowViewModel(parameter.ValueSet.First(), 0, ParameterSwitchKind.COMPUTED)
562+
{
563+
SelectedMatlabVariable = variable
564+
};
565+
566+
this.dstController.SelectedHubMapResultToTransfer.Add(mappedElement);
567+
Assert.AreEqual(5, this.dstController.MatlabAllWorkspaceRowViewModels.Count);
568+
Assert.DoesNotThrowAsync(() => this.dstController.TransferMappedThingsToDst());
569+
570+
var variableAfterTransfer = this.dstController.MatlabWorkspaceInputRowViewModels.First(x => x.Name == "anArrayVariable");
571+
Assert.AreEqual(7, this.dstController.MatlabAllWorkspaceRowViewModels.Count);
572+
var array = (Array) variableAfterTransfer.ArrayValue;
573+
Assert.AreEqual(3, array.GetLength(0));
574+
575+
variable.RowColumnSelection = RowColumnSelection.Row;
576+
variable.SampledFunctionParameterParameterAssignementRows[0].SelectedParameterTypeAssignment = sampledFunction.IndependentParameterType[0];
577+
variable.SampledFunctionParameterParameterAssignementRows[1].SelectedParameterTypeAssignment = sampledFunction.DependentParameterType[0];
578+
579+
this.dstController.SelectedHubMapResultToTransfer.Add(mappedElement);
580+
581+
Assert.DoesNotThrowAsync(() => this.dstController.TransferMappedThingsToDst());
582+
variableAfterTransfer = this.dstController.MatlabWorkspaceInputRowViewModels.First(x => x.Name == "anArrayVariable");
583+
Assert.AreEqual(7, this.dstController.MatlabAllWorkspaceRowViewModels.Count);
584+
array = (Array)variableAfterTransfer.ArrayValue;
585+
Assert.AreEqual(3, array.GetLength(1));
586+
587+
this.dstController.IsSessionOpen = true;
588+
var children = this.dstController.MatlabWorkspaceInputRowViewModels.First(x => x.ParentName == "anArrayVariable");
589+
children.ActualValue = "a";
590+
Assert.AreNotEqual("a", children.ActualValue);
591+
}
592+
593+
[Test]
594+
public void VerifyArrayParameterTypeTransfer()
595+
{
596+
var scale = new RatioScale() { NumberSet = NumberSetKind.REAL_NUMBER_SET };
597+
598+
var arrayParameter = new ArrayParameterType()
599+
{
600+
Name = "Array3x2",
601+
ShortName = "array3x2",
602+
};
603+
604+
arrayParameter.Dimension = new OrderedItemList<int>(arrayParameter) { 3, 2 };
605+
606+
var simpleQuantityKind = new SimpleQuantityKind()
607+
{
608+
Name = "aSimpleQuantity",
609+
PossibleScale = { scale },
610+
DefaultScale = scale
611+
};
612+
613+
for (var i = 0; i < 6; i++)
614+
{
615+
arrayParameter.Component.Add(new ParameterTypeComponent()
616+
{
617+
ParameterType = simpleQuantityKind,
618+
Scale = scale
619+
});
620+
}
621+
622+
var parameter = new Parameter()
623+
{
624+
Iid = new Guid(),
625+
ParameterType = arrayParameter,
626+
Container = new ElementDefinition(new Guid(), null, null),
627+
ValueSet =
628+
{
629+
new ParameterValueSet
630+
{
631+
Computed = new ValueArray<string>(new []{"1", "2", "3", "4", "5", "6"})
632+
}
633+
}
634+
};
635+
636+
var arrayValue = new object[3, 2];
637+
638+
for (var i = 0; i < arrayValue.GetLength(0); i++)
639+
{
640+
for (var j = 0; j < arrayValue.GetLength(1); j++)
641+
{
642+
arrayValue.SetValue(0, i, j);
643+
}
644+
}
645+
646+
var variable = new MatlabWorkspaceRowViewModel("anArrayVariable", arrayValue)
647+
{
648+
Identifier = "anArrayVariable-a"
649+
};
650+
651+
this.dstController.MatlabWorkspaceInputRowViewModels.Clear();
652+
653+
this.dstController.MatlabWorkspaceInputRowViewModels.AddRange(variable.UnwrapVariableRowViewModels());
654+
655+
var mappedElement = new ParameterToMatlabVariableMappingRowViewModel(parameter.ValueSet.First(), 0, ParameterSwitchKind.COMPUTED)
656+
{
657+
SelectedMatlabVariable = variable
658+
};
659+
660+
this.dstController.SelectedHubMapResultToTransfer.Add(mappedElement);
661+
662+
Assert.DoesNotThrowAsync(() => this.dstController.TransferMappedThingsToDst());
663+
var variableAfterTransfer = this.dstController.MatlabWorkspaceInputRowViewModels.First(x => x.Name == "anArrayVariable");
664+
Assert.AreEqual(7, this.dstController.MatlabAllWorkspaceRowViewModels.Count);
665+
var array = (Array)variableAfterTransfer.ArrayValue;
666+
Assert.AreEqual(6, array.GetValue(2,1));
667+
}
478668
}
479669
}

DEHPMatlab.Tests/NetChange/DstNetChangePreviewViewModelTestFixture.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,14 @@ public void VerifyCDPMessageListening()
110110
IsSelectedForTransfer = true
111111
};
112112

113+
var highlightEvent = new DstHighlightEvent("a-a");
114+
Assert.IsTrue(highlightEvent.ShouldHighlight);
115+
Assert.AreEqual("a-a", highlightEvent.TargetThingId);
116+
Assert.DoesNotThrow(() => CDPMessageBus.Current.SendMessage(highlightEvent));
117+
118+
Assert.IsTrue(variable.IsHighlighted);
119+
Assert.IsTrue(variable.IsManuallyEditable);
120+
113121
this.hubMapResult.Add(new ParameterToMatlabVariableMappingRowViewModel()
114122
{
115123
SelectedParameter = this.parameter0,
@@ -155,8 +163,6 @@ public void VerifyInputVariablesObservable()
155163
Assert.AreEqual(1, this.viewModel.InputVariablesCopy.Count);
156164
this.inputVariables.Remove(variable);
157165
Assert.IsEmpty(this.viewModel.InputVariablesCopy);
158-
159-
Assert.DoesNotThrow(() => this.viewModel.WhenInputVariableRemoved(new MatlabWorkspaceRowViewModel("bn", 45)));
160166
}
161167

162168
[Test]

DEHPMatlab.Tests/Resources/GNC_Lab4.m

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
%% TASK 1
33

44
% Constants
5-
RE = 6370;mu = 398600;h_A = 6000;h_B = 15000;
5+
RE = - 6370;mu = 398600;h_A = 6000;h_B = 15000;
66

77
% Initial values
88
%Altitude of spacecraft A in km
@@ -188,6 +188,23 @@
188188
ylabel('a_z [m/s^2]')
189189

190190

191+
invalidUnaryPrefix = --TA;
192+
193+
validUnaryPrefix = --47;
194+
195+
invalidBinary = [-47 --TA];
196+
invalidBinary = [-47 --15];
197+
array1 = [0 1 2 3]
198+
array2 = [0,1,2,3]
199+
array3 = [0 -2 -5 6]
200+
array4 = [0,-2 -5,-6]
201+
array5 = [0 -2 -5 6]'
202+
array6 = [0,-2,-5,-6]'
203+
array7 = [0 5 -5 -5; 0 5 -5 -5; 0 5 -5 -5]
204+
array8 = [0 5 -5 -5; 0 5 -5 -5; 0 5 -5 -5]'
205+
array9 = [-5 -5 -5 -6 -TA]
206+
207+
191208

192209
%% FUNCTIONS
193210

DEHPMatlab.Tests/Services/MatlabParser/MatlabParserTestFixture.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ namespace DEHPMatlab.Tests.Services.MatlabParser
2727
using System;
2828
using System.Collections.Generic;
2929
using System.IO;
30+
using System.Linq;
3031

3132
using DEHPMatlab.Services.MatlabParser;
3233
using DEHPMatlab.ViewModel.Row;
@@ -50,11 +51,17 @@ public void VerifyParsing()
5051
string modifiedScriptFilePath;
5152
Assert.Throws<FileNotFoundException>(()=> this.parser.ParseMatlabScript("anInvalidPath", out modifiedScriptFilePath));
5253

53-
List<MatlabWorkspaceRowViewModel> matlabWorkspaceViewModels = this.parser.ParseMatlabScript(Path.Combine(TestContext.CurrentContext.TestDirectory, "Resources", "GNC_Lab4.m"),
54-
out modifiedScriptFilePath);
54+
List<MatlabWorkspaceRowViewModel> matlabWorkspaceViewModels = this.parser.ParseMatlabScript(Path.Combine(TestContext.CurrentContext.TestDirectory,
55+
"Resources", "GNC_Lab4.m"), out modifiedScriptFilePath);
5556

56-
Assert.AreEqual(6, matlabWorkspaceViewModels.Count);
57+
Assert.AreEqual(20, matlabWorkspaceViewModels.Count);
58+
Assert.IsTrue((double)matlabWorkspaceViewModels.First().ActualValue < 0);
59+
Assert.AreEqual(-6370, matlabWorkspaceViewModels.First().ActualValue);
5760
Assert.IsTrue(File.Exists(modifiedScriptFilePath));
61+
var lastMatlabVariable = matlabWorkspaceViewModels.Last();
62+
var arrayValue = (Array) lastMatlabVariable.ActualValue;
63+
Assert.AreEqual(4, arrayValue.GetLength(0));
64+
Assert.AreEqual(3, arrayValue.GetLength(1));
5865
File.Delete(modifiedScriptFilePath);
5966
}
6067
}

DEHPMatlab.Tests/ViewModel/Dialogs/DstMappingConfigurationDialogViewModelTestFixture.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ public void VerifySelectedThingWithArrayValue()
484484
Assert.AreEqual(2, variable.SampledFunctionParameterParameterAssignementRows.Count);
485485
Assert.AreEqual(RowColumnSelection.Column, variable.RowColumnSelection);
486486
Assert.IsFalse(variable.SampledFunctionParameterParameterAssignementRows.First().IsDependantParameter);
487-
Assert.AreEqual(1, variable.SampledFunctionParameterParameterAssignementRows.Last().Index);
487+
Assert.AreEqual("1", variable.SampledFunctionParameterParameterAssignementRows.Last().Index);
488488

489489
variable.RowColumnSelection = RowColumnSelection.Row;
490490
Assert.AreEqual(3, variable.SampledFunctionParameterParameterAssignementRows.Count);

0 commit comments

Comments
 (0)