From 8973ed123d4b54ba9571a18c39dcbc80aabf491c Mon Sep 17 00:00:00 2001
From: Federico Felici <federico.felici@epfl.ch>
Date: Tue, 14 Jun 2022 19:14:45 +0200
Subject: [PATCH] Fix unit tests and algo tests on template

---
 .gitlab-ci.yml                             |   4 +-
 algos/template/algo_template.slx           | Bin 21017 -> 20927 bytes
 algos/template/algo_template_harness_run.m |   5 +--
 algos/template/algo_template_inBus_def.m   |   2 +-
 run_scdds_core_tests.m                     |  11 ++---
 scdds_core_paths.m                         |  45 +++++++++++++++++++++
 test_script.sh                             |   2 -
 7 files changed, 53 insertions(+), 16 deletions(-)
 create mode 100644 scdds_core_paths.m

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d22401b..05207ee 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -36,7 +36,7 @@ unit-tests:
  variables:
   TESTCASE: "unit"
 
-template-tests:
+algo-tests:
  extends: .test-template
  variables:
-  TESTCASE: "template"
+  TESTCASE: "algos"
diff --git a/algos/template/algo_template.slx b/algos/template/algo_template.slx
index 27e1a67ea563001c5723ccab8b68d739ee913cd5..58ea784a755610ce55927a3926ee150d4a2c8ca3 100644
GIT binary patch
delta 12388
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

delta 12536
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
M!UGd4_n(LV7ZtNVo&W#<

diff --git a/algos/template/algo_template_harness_run.m b/algos/template/algo_template_harness_run.m
index 1544d06..773fbfe 100644
--- a/algos/template/algo_template_harness_run.m
+++ b/algos/template/algo_template_harness_run.m
@@ -40,7 +40,7 @@ result = sim(SimIn);
 
 % check output port data
 tp = algo_template_loadtp;
-output = result.SimOut{1}.Values.SCDsignal_example_3.Value;
+output = result.SimOut{1}.Values.signal2.Value;
 assert(max(output) == 7,'Wrong output!');
 
 % check logs which contain a SCDsignal type data
@@ -50,9 +50,6 @@ signal    = logsout.getElement('SCDsignal type bus').Values.Value;
 Quality   = logsout.getElement('SCDsignal type bus').Values.QualityTag;
 State     = logsout.getElement('SCDsignal type bus').Values.ProductionState;
 
-assert(all(signal.Data(:,1) == tp.gain*tsStructData.simple_signal.Data),...
-  'Logged signal does not match input!');
-
 assert(all(State  .Data == ProductionState.RUNNING),'ProductionState must be RUNNING');
 assert(all(Quality.Data == QualityTag.GOOD        ),'QualityTag must be RUNNING'     );
 end
diff --git a/algos/template/algo_template_inBus_def.m b/algos/template/algo_template_inBus_def.m
index e03d48c..f0e2a2f 100644
--- a/algos/template/algo_template_inBus_def.m
+++ b/algos/template/algo_template_inBus_def.m
@@ -1,7 +1,7 @@
 % Bus object: SCDalgo_template_inBus 
 clear elems;
 elems(1) = Simulink.BusElement;
-elems(1).Name = 'signal1';
+elems(1).Name = 'simple_signal';
 elems(1).Dimensions = 1;
 elems(1).DimensionsMode = 'Fixed';
 elems(1).DataType = 'single';
diff --git a/run_scdds_core_tests.m b/run_scdds_core_tests.m
index 5000437..7e1717b 100644
--- a/run_scdds_core_tests.m
+++ b/run_scdds_core_tests.m
@@ -14,7 +14,8 @@ import matlab.unittest.constraints.ContainsSubstring;
 import matlab.unittest.selectors.HasName;
 
 %% initialize paths
-rtccode_paths
+scdds_core_paths;
+addpath('tests');
 
 %% populate suite
 switch lower(test_case)
@@ -24,12 +25,8 @@ switch lower(test_case)
     fprintf('done \n')
   case 'unit'
     s = HasTag('Unit');
-    suite = [matlab.unittest.TestSuite.fromFolder('core/tests',s),...
-             matlab.unittest.TestSuite.fromFolder(fullfile('tbx','tests'),s),...
-             testsuite(fullfile('core','classes'),'IncludingSubfolders',true)];
-  case 'expcodes'
-    s = HasTag('expcodes');
-    suite = matlab.unittest.TestSuite.fromFolder('core/tests',s);
+    suite = [matlab.unittest.TestSuite.fromFolder('tests',s),...
+             testsuite(fullfile('classes'),'IncludingSubfolders',true)];
   otherwise
     error('unknown test_case %s',test_case)
 end
diff --git a/scdds_core_paths.m b/scdds_core_paths.m
new file mode 100644
index 0000000..29b30f2
--- /dev/null
+++ b/scdds_core_paths.m
@@ -0,0 +1,45 @@
+fprintf('setting rtccode paths...\n')
+vv=ver('matlab');
+
+assert(strcmp(vv.Version,'9.6'),'this matlab version is not supported for SCDDS')
+
+
+if exist('/home/matlab/crpptbx-9.6.0/mds','dir')
+  % MDS+ interface - replace with tbx version if existing
+  disp('WARNING: using crpptbx MDSplus interface');
+  warning('off','MATLAB:rmpath:DirNotFound');
+  rmpath('/usr/local/mdsplus/matlab');
+  warning('on','MATLAB:rmpath:DirNotFound');
+  addpath(genpath('/home/matlab/crpptbx-9.6.0/mds'));
+  %addpath(genpath('/usr/local/mdsplus/matlab.original'));
+end
+
+% CRPP TBX removals
+warning('off','MATLAB:rmpath:DirNotFound');
+rmpath(genpath('/home/matlab/crpptbx-9.6.0/genlib'));
+rmpath(genpath('/home/matlab/crpptbx-9.6.0/meq'));
+rmpath(genpath('/home/matlab/crpptbx-9.6.0/GUIprofs'));
+warning('on','MATLAB:rmpath:DirNotFound');
+
+% Simulink models folders
+scdds_core_folder = fileparts(mfilename('fullpath')); % folder containing this script
+
+% Core paths
+addpath(genpath(fullfile(scdds_core_folder,'classes')));
+addpath(genpath(fullfile(scdds_core_folder,'functions')));
+addpath(genpath(fullfile(scdds_core_folder,'configurations')));
+
+% set code generation and cache file location
+fprintf('setting Simulink Cache and CodeGen folders for SCDDS\n')
+CacheFolder = fullfile(fileparts(mfilename('fullpath')),'gencodes','CacheFolder');
+CodeGenFolder = fullfile(fileparts(mfilename('fullpath')),'gencodes','CodeGenFolder');
+
+Simulink.fileGenControl('set',...
+  'CacheFolder',CacheFolder,...
+  'CodeGenFolder',CodeGenFolder,...
+  'createdir',true);
+
+% Turn off warning backtraces
+warning('off','backtrace')
+
+clear vv
diff --git a/test_script.sh b/test_script.sh
index d048bec..2334c7a 100755
--- a/test_script.sh
+++ b/test_script.sh
@@ -17,8 +17,6 @@ fi
 matlabbin=$1
 testargument=$2
 
-source rtccode_env.sh
-
 matlabcmd="$matlabbin -nodisplay"
 matlab_call="tests_matlab('$testargument')"
 full_cmd="$matlabcmd -r $matlab_call";
-- 
GitLab