From 117e185b7dbffba4e1e4c76a38225f7a4b6158d4 Mon Sep 17 00:00:00 2001 From: LolloBici <lorenzo.amici@skywarder.eu> Date: Tue, 10 Jun 2025 18:39:54 +0200 Subject: [PATCH] [unit-test-updates] partially fixed the way to save Settings and fixed AB test --- simulator/mainSimulator.m | 2 +- unitTests/UnitTestConfig.m | 2 +- .../testSimulator/HRE/referenceState_HRE.mat | 4 +- .../HRE/referenceState_solid.mat | 3 - .../ballistic/referenceState_ballistic.mat | 4 +- .../engineCut/referenceState_engineCut.mat | 4 +- .../multipleAB/referenceState_multipleAB.mat | 4 +- .../solid/referenceState_HRE.mat | 3 - .../solid/referenceState_solid.mat | 4 +- unitTests/mainUnitTest.m | 7 +- unitTests/saveTests.m | 8 +- unitTests/tests/TestSimulator.m | 88 +++++++++++-------- 12 files changed, 68 insertions(+), 65 deletions(-) delete mode 100644 unitTests/data/testSimulator/HRE/referenceState_solid.mat delete mode 100644 unitTests/data/testSimulator/solid/referenceState_HRE.mat diff --git a/simulator/mainSimulator.m b/simulator/mainSimulator.m index fec14574..9ec8e265 100644 --- a/simulator/mainSimulator.m +++ b/simulator/mainSimulator.m @@ -1,4 +1,4 @@ -function [ascent, descent] = mainSimulator(rocket, wind, environment, settings, options) +function [ascent, descent, settings] = mainSimulator(rocket, wind, environment, settings, options) arguments rocket = [] % Rocket = Rocket.empty wind = [] % Wind = Wind.empty diff --git a/unitTests/UnitTestConfig.m b/unitTests/UnitTestConfig.m index fc571fa7..7df49312 100644 --- a/unitTests/UnitTestConfig.m +++ b/unitTests/UnitTestConfig.m @@ -5,7 +5,7 @@ mission = Mission(true); %% UNIT TESTS TO RUN % choose which folders to test -opt.testSimulator = false; +opt.testSimulator = true; % opt.testCommonFunction = true; opt.testApogeeAnalysis = false; opt.testOptimization = false; diff --git a/unitTests/data/testSimulator/HRE/referenceState_HRE.mat b/unitTests/data/testSimulator/HRE/referenceState_HRE.mat index 3331f314..2322be59 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:831092047758e774e5ef76b35b38e69da3d6bcb25860251f4ff66f410b1a8db6 -size 80954262 +oid sha256:b59a1ce9094c77e8b49372d2b7506618553c36ab066f54016de7bd1d427c58a5 +size 81007984 diff --git a/unitTests/data/testSimulator/HRE/referenceState_solid.mat b/unitTests/data/testSimulator/HRE/referenceState_solid.mat deleted file mode 100644 index 308aec3a..00000000 --- a/unitTests/data/testSimulator/HRE/referenceState_solid.mat +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4504a5538c66571b16d03ded9468a82653815d27162c39604395e9646e05a6bc -size 80965569 diff --git a/unitTests/data/testSimulator/ballistic/referenceState_ballistic.mat b/unitTests/data/testSimulator/ballistic/referenceState_ballistic.mat index 43b6deed..a16d4002 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:867d5140122460820a941efaddb3485ecfd4aae7731210e72e5c30d95a382aa9 -size 80216228 +oid sha256:da148d37baf11593053b5c4de858b92b2418caa024b77796a43dbb449b9c695e +size 80282383 diff --git a/unitTests/data/testSimulator/engineCut/referenceState_engineCut.mat b/unitTests/data/testSimulator/engineCut/referenceState_engineCut.mat index b0126fd0..082b671a 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:bd1b284dcf129621db80ddec20afe9970cfc571d0ed84e0debb410545bc6d1af -size 80990432 +oid sha256:d73735a073e896c78191d5f45798181d28fbb8b51e6b9d79def178803ac2bb0e +size 80930900 diff --git a/unitTests/data/testSimulator/multipleAB/referenceState_multipleAB.mat b/unitTests/data/testSimulator/multipleAB/referenceState_multipleAB.mat index ddcd7da8..b8a3fa07 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:669e170138f6ed0041481355b962cd9826fe85cfc50ed8065fb72e96978978ae -size 80876361 +oid sha256:338e3960adae4e04ef9eee7a56b399674b27f23115dd1bcd914ac33c76a3f7b1 +size 80876038 diff --git a/unitTests/data/testSimulator/solid/referenceState_HRE.mat b/unitTests/data/testSimulator/solid/referenceState_HRE.mat deleted file mode 100644 index 36d4c956..00000000 --- a/unitTests/data/testSimulator/solid/referenceState_HRE.mat +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45e5372d29592a2fe1b0f4d3cd2f608b80bea68d364deabe14a53dca409fa977 -size 80927786 diff --git a/unitTests/data/testSimulator/solid/referenceState_solid.mat b/unitTests/data/testSimulator/solid/referenceState_solid.mat index ae85f128..984ec936 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:b1265227aac6c42eaaa8b9deeb64a90e421966c7e46c3df54f713538d4dd8ed3 -size 80958071 +oid sha256:69a49aeddfad717fb4849a369866d1a3b782472568cfdbdf850d45a23df70ad7 +size 80976751 diff --git a/unitTests/mainUnitTest.m b/unitTests/mainUnitTest.m index 9e85c331..13bd31f4 100644 --- a/unitTests/mainUnitTest.m +++ b/unitTests/mainUnitTest.m @@ -6,9 +6,6 @@ arguments options.testOptimization logical = []; options.testSensitivity logical = []; options.testSimulator logical = []; - - - end %% PATH % main unit-test @@ -17,7 +14,7 @@ currentPath = fileparts(mfilename('fullpath')); addpath(genpath(fullfile(currentPath, '..'))); %% LOAD OPTIONS -settings = Settings('UnitTest'); +settings = Settings('unitTest'); if ~isempty(options), Settings.read(settings, options, 'opt'); end %% TESTS @@ -60,4 +57,6 @@ end toc(beginTest) +clear all + end \ No newline at end of file diff --git a/unitTests/saveTests.m b/unitTests/saveTests.m index c14e556f..0e5cb83c 100644 --- a/unitTests/saveTests.m +++ b/unitTests/saveTests.m @@ -3,15 +3,13 @@ currentPath = fileparts(mfilename('fullpath')); addpath(genpath(currentPath)); -configUnitTest; - -mission = Mission(true); +unitTestConfig; totTime = tic; %% CREATING SIMULATOR TESTS if opt.createTestSimulator - verifiable = {'HRE', 'solid', 'multipleAB', 'engineCut', 'ballistic'}; + verifiable = {'multipleAB', 'ballistic', 'engineCut', 'solid', 'HRE'}; for k = 1:length(verifiable) TestSimulator.saveTest(verifiable{k}, mission); end @@ -53,3 +51,5 @@ end totTimeF = toc(totTime); fprintf('\n\n All unit tests created in: %2.2f seconds\n\n', totTimeF) +% clear all +% clc diff --git a/unitTests/tests/TestSimulator.m b/unitTests/tests/TestSimulator.m index bb7bc61f..5b80c568 100644 --- a/unitTests/tests/TestSimulator.m +++ b/unitTests/tests/TestSimulator.m @@ -34,7 +34,29 @@ classdef TestSimulator < UnitTest end end + methods (Test) + function mainSimulatorTest(testCase, verifiable) + + testCase.createTest(verifiable); + + verifiable %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + mainSimPath = fullfile('..', '..', 'simulator'); + addpath(genpath(mainSimPath)); + + testCase.rocket.airbrakes.enabled %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + % Run main simulator + [postp.stateA, postp.stateF] = mainSimulator(testCase.rocket, testCase.wind, testCase.environment, testCase.simulatorSettings); + + max(abs(postp.stateA.state.Y(3,:))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + % Verify results + testCase.verifyEqual(postp, testCase.refSimulator, 'AbsTol', testCase.absToll, 'RelTol', testCase.relToll); + clear all, close all + end + end methods (Static) function saveTest(verifiable, mission) @@ -44,8 +66,28 @@ classdef TestSimulator < UnitTest currentPath = fileparts(mfilename('fullpath')); addpath(genpath(currentPath)); - mainSimPath = fullfile(currentPath, '..', '..', 'simulator', 'simulatorConfig.m'); - mainOdePath = fullfile(currentPath, '..', '..', 'common', 'settings', 'odeConfig.m'); + % 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') + simulator.ballistic = 1; + simulator.parafoil = 0; + end + simulator.SMonly = 0; + simulator.prints = 0; + simulator.plots = 0; + simulator.landingMap = 0; + simulator.satellite3D = 0; + + simulatorSettings.addprop('simulator'); + simulatorSettings.simulator = simulator; rocket = Rocket(mission); environment = Environment(mission, rocket.motor); @@ -54,59 +96,27 @@ classdef TestSimulator < UnitTest if verifiable == "multipleAB" rocket.airbrakes.enabled = 1; end - - simulatorSettings = Settings(mainSimPath, mainOdePath); - simulatorSettings.simulator.SMonly = 0; - if strcmp(verifiable, 'ballistic') - simulatorSettings.simulator.ballistic = 1; - simulatorSettings.simulator.parafoil = 0; - end % simulator - [stateA, stateF] = mainSimulator(rocket, wind, environment, simulatorSettings); - - % mainSimPath = fullfile('..', '..', 'simulator', 'simulatorConfig.m'); - % mainOdePath = fullfile('..', '..', 'common', 'settings', 'odeConfig.m'); - % simulatorSettings = Settings(mainSimPath, mainOdePath); - % simulatorSettings.simulator.SMonly = 0; - % if strcmp(verifiable, 'ballistic') - % simulatorSettings.simulator.ballistic = 1; - % simulatorSettings.simulator.parafoil = 0; - % end + [stateA, stateF, simulatorSettings] = mainSimulator(rocket, wind, environment, simulatorSettings); % Save final state fileName = sprintf("referenceState_%s.mat", verifiable); - folderPath = fullfile(currentPath,'..', 'data', 'testSimulator', verifiable); + folderPath = fullfile(currentPath, '..', 'data', 'testSimulator', verifiable); filePath = fullfile(folderPath, fileName); if ~exist(folderPath, "dir") mkdir(folderPath) end + save(filePath,'stateA','stateF', 'simulatorSettings',... 'mission', 'rocket', 'environment', 'wind'); - - close all; Time = toc(Time); fprintf('\t %s test created in: %2.2f seconds\n',verifiable, Time) + + clear all, close all end end - methods (Test) - function mainSimulatorTest(testCase, verifiable) - - testCase.createTest(verifiable); - - mainSimPath = fullfile('..', '..', 'simulator'); - addpath(genpath(mainSimPath)); - - % Run main simulator - [postp.stateA, postp.stateF] = mainSimulator(testCase.rocket, testCase.wind, testCase.environment, testCase.simulatorSettings); - - close all; - - % Verify results - testCase.verifyEqual(postp, testCase.refSimulator, 'AbsTol', testCase.absToll, 'RelTol', testCase.relToll); - end - end end -- GitLab