From 2cef8b44bc8c360c686b88471d8ad6e3748b82f7 Mon Sep 17 00:00:00 2001 From: Lorenzo Bettonte <lorenzo.bettonte@skywarder.edu> Date: Wed, 11 Jun 2025 14:37:27 +0200 Subject: [PATCH] [unit-test-updates] transformed saveTests from a script to a function with te abitlity to set input settings and options --- unitTests/UnitTestConfig.m | 9 ++-- .../testSimulator/HRE/referenceState_HRE.mat | 4 +- .../ballistic/referenceState_ballistic.mat | 4 +- .../engineCut/referenceState_engineCut.mat | 4 +- .../multipleAB/referenceState_multipleAB.mat | 4 +- .../solid/referenceState_solid.mat | 4 +- unitTests/mainUnitTest.m | 3 +- unitTests/saveTests.m | 40 ++++++++++++--- unitTests/tests/TestSimulator.m | 50 ++++++------------- 9 files changed, 64 insertions(+), 58 deletions(-) diff --git a/unitTests/UnitTestConfig.m b/unitTests/UnitTestConfig.m index 7df49312..0a2f0208 100644 --- a/unitTests/UnitTestConfig.m +++ b/unitTests/UnitTestConfig.m @@ -14,8 +14,9 @@ opt.testSensitivity = false; %% UNIT TEST TO CREATE % choose which folders to create data for -opt.createTestSimulator = true; +opt.saveTestSimulator = true; % opt.createTestCommonFunction = true; -opt.createTestApogeeAnalysis = false; -opt.createTestOptimization = false; -opt.createTestSensitivity = false; +opt.saveTestApogeeAnalysis = false; +opt.saveTestOptimization = false; +opt.saveTestSensitivity = false; + diff --git a/unitTests/data/testSimulator/HRE/referenceState_HRE.mat b/unitTests/data/testSimulator/HRE/referenceState_HRE.mat index 3ff707f4..481f5873 100644 --- a/unitTests/data/testSimulator/HRE/referenceState_HRE.mat +++ b/unitTests/data/testSimulator/HRE/referenceState_HRE.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0467b74a556ebf31ae1175c70f3544aa2445c7d96036e06e91503651fa69312b -size 80937255 +oid sha256:7b93d349359893dc6b10a2959cb2b70f71ff1a4902280a50e795dde74db36285 +size 80208047 diff --git a/unitTests/data/testSimulator/ballistic/referenceState_ballistic.mat b/unitTests/data/testSimulator/ballistic/referenceState_ballistic.mat index 6a7447b5..1327f8c0 100644 --- a/unitTests/data/testSimulator/ballistic/referenceState_ballistic.mat +++ b/unitTests/data/testSimulator/ballistic/referenceState_ballistic.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f9ed6b470f14e519542f06adaeae08a698c3d05db66ca22c28ebe2b37f9a79c -size 80258344 +oid sha256:db69488a839d1cbf7b6d1db8e05af0016098cc3910eb9c3fc95a076e126d48cd +size 80208047 diff --git a/unitTests/data/testSimulator/engineCut/referenceState_engineCut.mat b/unitTests/data/testSimulator/engineCut/referenceState_engineCut.mat index b65d4ff5..0a01760d 100644 --- a/unitTests/data/testSimulator/engineCut/referenceState_engineCut.mat +++ b/unitTests/data/testSimulator/engineCut/referenceState_engineCut.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7121f30f477becacda5bcc92e9e9868ad3f1c9a02fdad5fcc1f2c8ca0466e608 -size 80973706 +oid sha256:47a3834687056548eff3dd4e27da6a749687a78d052b85a3a589d46876d0e8e8 +size 80208047 diff --git a/unitTests/data/testSimulator/multipleAB/referenceState_multipleAB.mat b/unitTests/data/testSimulator/multipleAB/referenceState_multipleAB.mat index 126547f9..1cc02991 100644 --- a/unitTests/data/testSimulator/multipleAB/referenceState_multipleAB.mat +++ b/unitTests/data/testSimulator/multipleAB/referenceState_multipleAB.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35fe398dc348a018eeb1d15d489d935aa7f4387dd31a8d933bff85c2f0af3820 -size 80900181 +oid sha256:dac6eb6f3c456a77a3e4241643983218cad47f1dee15fc17317514dfbd581a2f +size 80895844 diff --git a/unitTests/data/testSimulator/solid/referenceState_solid.mat b/unitTests/data/testSimulator/solid/referenceState_solid.mat index e70ea65c..e3e14a40 100644 --- a/unitTests/data/testSimulator/solid/referenceState_solid.mat +++ b/unitTests/data/testSimulator/solid/referenceState_solid.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb8af06e30dbe69ad92b0fa84a186ea73605f6cb52939a34e612bdcfd83d5594 -size 80978018 +oid sha256:d53b91bbb63edf70664108f16f383fd1f45289191bb675ac3713089da1a68b4e +size 80208047 diff --git a/unitTests/mainUnitTest.m b/unitTests/mainUnitTest.m index 13bd31f4..e59cd511 100644 --- a/unitTests/mainUnitTest.m +++ b/unitTests/mainUnitTest.m @@ -15,8 +15,7 @@ addpath(genpath(fullfile(currentPath, '..'))); %% LOAD OPTIONS settings = Settings('unitTest'); -if ~isempty(options), Settings.read(settings, options, 'opt'); end - +Settings.read(settings, options, 'opt'); %% TESTS beginTest = tic; diff --git a/unitTests/saveTests.m b/unitTests/saveTests.m index 0e5cb83c..fd096d82 100644 --- a/unitTests/saveTests.m +++ b/unitTests/saveTests.m @@ -1,17 +1,41 @@ -% save tests - +function saveTests(rocket, wind, environment, settings , options) +arguments + rocket = [] % Rocket = Rocket.empty + wind = [] % Wind = Wind.empty + environment = [] % Environment = Environment.empty + settings = [] % Settings = Settings.empty + options.saveTestApogeeAnalysis logical = []; + options.saveTestOptimization logical = []; + options.saveTestSensitivity logical = []; + options.saveTestSimulator logical = []; +end +%% PATH currentPath = fileparts(mfilename('fullpath')); addpath(genpath(currentPath)); -unitTestConfig; totTime = tic; +%% LOAD DATA / SETTINGS +mission = Mission(true); +if isempty(rocket), rocket = Rocket(mission); end +if isempty(environment), environment = Environment(mission, rocket.motor); end +if isempty(wind), wind = Wind(mission); end +if isempty(settings) + simPath = fullfile(fileparts(mfilename('fullpath')),'..', 'simulator', 'simulatorConfig.m'); + %odePath = fullfile(fileparts(mfilename('fullpath')), '..', '..', 'common', 'settings ', 'odeConfig.m'); + settings = Settings(simPath, 'ode','unitTest'); + +end +Settings.read(settings, options, 'opt'); + + + %% CREATING SIMULATOR TESTS -if opt.createTestSimulator +if settings.opt.saveTestSimulator verifiable = {'multipleAB', 'ballistic', 'engineCut', 'solid', 'HRE'}; for k = 1:length(verifiable) - TestSimulator.saveTest(verifiable{k}, mission); + TestSimulator.saveTest(verifiable{k}, mission,rocket, wind, environment, settings ); end end @@ -33,7 +57,7 @@ end % end %% TEST APOGEE ANALYSIS -if opt.createTestApogeeAnalysis +if settings.opt.saveTestApogeeAnalysis TestApogeeAnalysis.saveTest(mission); end @@ -43,13 +67,13 @@ end % end %% OPTIMIZATION -if opt.createTestOptimization +if settings.opt.saveTestOptimization TestOptimization.saveTest(mission); end totTimeF = toc(totTime); fprintf('\n\n All unit tests created in: %2.2f seconds\n\n', totTimeF) - +end % clear all % clc diff --git a/unitTests/tests/TestSimulator.m b/unitTests/tests/TestSimulator.m index f4ad54ad..c6fde689 100644 --- a/unitTests/tests/TestSimulator.m +++ b/unitTests/tests/TestSimulator.m @@ -3,7 +3,7 @@ classdef TestSimulator < UnitTest % TEST FUNZIONANTE, DA RISOLVERE PATH PER simulatorConfig.m in saveTest properties - simulatorSettings + settings refSimulator end @@ -32,7 +32,7 @@ classdef TestSimulator < UnitTest testCase.refSimulator.stateA = load(filePath).stateA; testCase.refSimulator.stateF = load(filePath).stateF; - testCase.simulatorSettings = load(filePath).simulatorSettings; + testCase.settings = load(filePath).settings; % Construct the file path dynamically based on the test parameter end @@ -53,51 +53,31 @@ classdef TestSimulator < UnitTest addpath(genpath(mainSimPath)); % Run main simulator - [postp.stateA, postp.stateF] = mainSimulator(testCase.rocket, testCase.wind, testCase.environment, testCase.simulatorSettings); + [postp.stateA, postp.stateF] = mainSimulator(testCase.rocket, testCase.wind, testCase.environment, testCase.settings); + max(abs(postp.stateA.state.Y(3,:))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Verify results testCase.verifyEqual(postp, testCase.refSimulator); end end methods (Static) - function saveTest(verifiable, mission) + function saveTest(verifiable,mission,rocket, wind, environment, settings) Time = tic; - - disp('Started saving simulator tests') - currentPath = fileparts(mfilename('fullpath')); addpath(genpath(currentPath)); - simPath = fullfile(fileparts(mfilename('fullpath')), '..', '..', 'simulator', 'simulatorConfig.m'); - odePath = fullfile(fileparts(mfilename('fullpath')), '..', '..', 'common', 'settings', 'odeConfig.m'); - simulatorSettings = Settings(simPath, odePath); - - % simulatorSettings = Settings('ode'); - % simConfigPath = fullfile(currentPath, '..', '..', 'simulator', 'simulatorConfig.m'); - % run(simConfigPath); - if strcmp(verifiable, 'ballistic') - simulatorSettings.simulator.ballistic = 1; - simulatorSettings.simulator.parafoil = 0; - end - simulatorSettings.simulator.unitTest = 1; - - % simulatorSettings.addprop('simulator'); - % simulatorSettings.simulator = simulator; + disp('Started saving simulator tests') - rocket = Rocket(mission); - environment = Environment(mission, rocket.motor); - wind = Wind(mission); - if verifiable == "HRE" - mission = Mission("2024_Lyra_Portugal_October"); + if strcmp(verifiable, 'ballistic') + settings.simulator.ballistic = 1; + settings.simulator.parafoil = 0; end - % if verifiable == "solid" - % mission = Mission("2023_Pyxis_Portugal_October"); - % end - + if verifiable == "multipleAB" rocket.airbrakes.enabled = 1; end @@ -107,7 +87,7 @@ classdef TestSimulator < UnitTest % end % simulator - [stateA, stateF, simulatorSettings] = mainSimulator(rocket, wind, environment, simulatorSettings); + [stateA, stateF, settings] = mainSimulator(rocket, wind, environment, settings,'unitTest',true); % Save final state fileName = sprintf("referenceState_%s.mat", verifiable); @@ -117,12 +97,14 @@ classdef TestSimulator < UnitTest if ~exist(folderPath, "dir") mkdir(folderPath) end - - save(filePath,'stateA','stateF', 'simulatorSettings',... + + save(filePath,'stateA','stateF', 'settings',... 'mission', 'rocket', 'environment', 'wind'); Time = toc(Time); fprintf('\t %s test created in: %2.2f seconds\n',verifiable, Time) + + end end end -- GitLab