diff --git a/unitTests/UnitTestConfig.m b/unitTests/UnitTestConfig.m index 7df49312a5e502290b7f4e75b0f4114f73760c6d..0a2f0208c556b59c8ef65ae2c051dca85cc7fb15 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 3ff707f447836a2403aa2eb7054b4199bb20c1d6..481f58730389d2e27bfce06f78e32de9b0dfa010 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 6a7447b503653998e84229749e430aa2b9bdc9e7..1327f8c0b7aab642d1960f88b495a1e2d60ee158 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 b65d4ff5f7a8de6e2643adf1a7eb421000f6c9d8..0a01760d174b54177ea85a70d1a65f63f514f404 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 126547f946ae77dbf320ba51f52cc82170a491d4..1cc02991c9c4d459bf9d236aab56ff47aca17f9e 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 e70ea65c49789924a0362d2f341b78564b922077..e3e14a40a9140cffcb5297b218b66b729bb65652 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 13bd31f40b4109eab264291b5e60d7beb1587da4..e59cd51139ca9a08b048ecd43bc09f328f015d32 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 0e5cb83c218d883ea6ae70cd5adb3bfbcdd0713b..fd096d825b364cf50b4108a75fe50c81b5eab822 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 f4ad54adddc4d920fe29febf6e6c5d000f594334..c6fde68913415131d616cff173b80b7160482eb8 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