diff --git a/simulator/mainSimulator.m b/simulator/mainSimulator.m index fec14574cc185be8b2965778181290104c9f1f14..9ec8e265e0d02d4551475d4cc7ff3bb490e5f522 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 fc571fa76bf5fd5aaa3c9a6c84683538d6b57b55..7df49312a5e502290b7f4e75b0f4114f73760c6d 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 3331f3146784e614bf735c360f0af75f6d5acbba..2322be59ad08f5afc4866c6b4ab4bbd2deb53e79 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 308aec3a34cc6dd0da38f3f3360f96f99986fd9d..0000000000000000000000000000000000000000 --- 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 43b6deed84b18bbbf2d702f9ac6b76adb94c199c..a16d400206405170d162fa375813c25813411f87 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 b0126fd0deb9be911e90562a4b1499743a89cf69..082b671ac1e49ce9e0507b47e6416b8f1b8216c3 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 ddcd7da8858b99566e90922ed2edf1c0235d5010..b8a3fa07e94c0b206de682ff74511c87a51d7273 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 36d4c956514b7ef5c602e7ebf440ddfbc1418f38..0000000000000000000000000000000000000000 --- 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 ae85f1285069da25ba6629448540dc72bf2d98a0..984ec936bc0dfdcb07f8091db645477154f28aaa 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 9e85c331a5595be5506d6d2fbfc1fee477cfd668..13bd31f40b4109eab264291b5e60d7beb1587da4 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 c14e556f80fa49a6b28cc983c82111caaf0826ad..0e5cb83c218d883ea6ae70cd5adb3bfbcdd0713b 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 bb7bc61f4f990d21d5fbfe0e75b45fc2ca551ab4..5b80c568388368488d87c419a3ec6fefcf6d6c58 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