@@ -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}
0 commit comments