4 #include "cdm/utils/testing/SETestManager.h"
5 #include "engine/human_adult/whole_body/Engine.h"
6 #include "engine/human_adult/whole_body/controller/Controller.h"
12 namespace pulse {
namespace human_adult_whole_body
17 EngineTest(
Logger* logger =
nullptr);
18 virtual ~EngineTest();
20 virtual bool RunTest(
const std::string& testName,
const std::string& sOutputDirectory)
override;
23 virtual void FillFunctionMap()
override;
24 typedef void(EngineTest::* testFunction)(
const std::string&);
25 std::map<std::string, testFunction> testMap;
26 std::stringstream m_ss;
37 void CardiovascularCircuitAndTransportTest(
const std::string& sTestDirectory);
38 void CardiovascularAndRenalCircuitAndTransportTest(
const std::string& sTestDirectory);
39 void CardiovascularAndTissueCircuitAndTransportTest(
const std::string& sTestDirectory);
40 void CardiovascularAndCerebrospinalFluidCircuitAndTransportTest(
const std::string& sTestDirectory);
41 void ExpandedLungsCardiovascularCircuitAndTransportTest(
const std::string& sTestDirectory);
42 void FullCardiovascularCircuitAndTransportTest(
const std::string& sTestDirectory);
43 void ExpandedLungsFullCardiovascularCircuitAndTransportTest(
const std::string& sTestDirectory);
44 void CardiovascularBloodGasesTest(
const std::string& sTestDirectory);
45 void ExpandedLungsCardiovascularBloodGasesTest(
const std::string& sTestDirectory);
47 void TuneCardiovascularCircuitTest(
const std::string& sTestDirectory);
48 void CardiovascularCircuitScaleTests(
const std::string& sTestDirectory);
50 enum CardiovascularDriver { Sinusoid = 0, Heart };
51 enum Expanded { None=0, Vasculature, Respiratory };
52 void SinusoidHeartDriver(
double time_s,
double heartRate_s,
double& lHeartElastance,
double& rHeartElastance);
53 void CardiovascularCircuitAndTransportTest(CardiovascularDriver driverType,
54 double complianceScale,
double resistanceScale,
double volumeScale,
double heartRate_bpm,
55 double sysRes,
double sysComp,
double aortaRes,
double aortaComp,
double rightHeartRes,
double venaCavaComp,
56 bool balanceBloodGases,
bool connectCSF,
bool connectTissue,
bool expandedKidneys,
bool expandedLungs,
57 const std::string& sTestDirectory,
const std::string& sTestName,
bool breakOutResults);
58 void TuneCardiovascularCircuitTest(
SETestSuite& testSuite,
const std::string& sTestDirectory,
const std::string& sTestName,
SEPatient& patient);
60 double m_MeanAortaPressure;
61 double m_MeanCVPressure;
65 double m_CardiacOutput;
71 void RenalCircuitAndTransportTest(
const std::string& sTestDirectory);
72 void RenalTGFFeedbackTest(
const std::string& sTestDirectory);
73 void RenalTGFandUPRFeedbackTest(
const std::string& sTestDirectory);
74 void RenalSecretionTest(
const std::string& sTestDirectory);
75 void RenalUrinateTest(
const std::string& sTestDirectory);
77 enum RenalFeedback { TGF, TGFandUPR };
78 void RenalFeedbackTest(RenalFeedback feedback,
const std::string& sTestDirectory,
const std::string& sTestName);
79 enum RenalSystems { Secretion, Urinating};
80 void RenalSystemTest(RenalSystems systemtest,
const std::string& sTestDirectory,
const std::string& sTestName);
86 void RespiratoryCircuitAndTransportTest(
const std::string& sTestDirectory);
87 void ExpandedLungsRespiratoryCircuitAndTransportTest(
const std::string& sTestDirectory);
88 void RespiratoryDriverTest(
const std::string& sTestDirectory);
90 enum RespiratoryConfiguration { RespiratorySolo,
91 ExpandedLungsRespiratorySolo,
92 AnesthesiaMachineSolo,
93 RespiratoryWithAnesthesiaMachine,
94 ExpandedLungsRespiratoryWithAnesthesiaMachine,
95 RespiratoryWithInhaler,
96 ExpandedLungsRespiratoryWithInhaler,
97 RespiratoryWithMechanicalVentilation,
98 ExpandedLungsRespiratoryWithMechanicalVentilation,
99 MechanicalVentilatorSolo,
100 RespiratoryWithMechanicalVentilator,
101 ExpandedLungsRespiratoryWithMechanicalVentilator
103 void RespiratoryCircuitAndTransportTest(RespiratoryConfiguration config,
bool expandedLungs,
const std::string& sTestDirectory);
109 void AnesthesiaMachineCircuitAndTransportTest(
const std::string& sTestDirectory);
110 void RespiratoryWithAnesthesiaMachineCircuitAndTransportTest(
const std::string& sTestDirectory);
111 void ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransportTest(
const std::string& sTestDirectory);
113 void AnesthesiaMachineCircuitAndTransportTest(RespiratoryConfiguration config,
bool expandedLungs,
const std::string& sTestDirectory);
119 void RespiratoryWithInhalerCircuitAndTransportTest(
const std::string& sTestDirectory);
120 void ExpandedLungsRespiratoryWithInhalerCircuitAndTransportTest(
const std::string& sTestDirectory);
127 void MechanicalVentilatorCircuitAndTransportTest(
const std::string& sTestDirectory);
128 void RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(
const std::string& sTestDirectory);
129 void ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest(
const std::string& sTestDirectory);
131 void MechanicalVentilatorCircuitAndTransportTest(RespiratoryConfiguration config,
bool expandedLungs,
const std::string& sTestDirectory);
137 void RespiratoryWithMechanicalVentilationCircuitAndTransportTest(
const std::string& sTestDirectory);
138 void ExpandedLungsRespiratoryWithMechanicalVentilationCircuitAndTransportTest(
const std::string& sTestDirectory);
144 void InternalTemperatureVariableBMRCircuitTest(
const std::string& sTestDirectory);
145 void InternalTemperatureVariableSkinCircuitTest(
const std::string& sTestDirectory);
146 void InternalTemperatureVariableCoreCircuitTest(
const std::string& sTestDirectory);
147 void EnvironmentVariableTemperatureCircuitTest(
const std::string& sTestDirectory);
148 void CombinedInternalAndEnvironmentVariableBMRandTemperatureCircuitTest(
const std::string& sTestDirectory);
149 void CombinedInternalAndEnvironmentSkinTempDropCircuitTest(
const std::string& sTestDirectory);
150 void EnvironmentISO7730ComparisonTest(
const std::string& sTestDirectory);
157 void DiffusionClearanceExcretionTests(
const std::string& rptDirectory);
158 void AlveolarCarbonDioxideDiffusionTest(
const std::string& rptDirectory);
159 void AlveolarOxygenDiffusionTest(
const std::string& rptDirectory);
160 void InstantPlusSimpleDiffusionTest(
const std::string& rptDirectory);
161 void SimpleDiffusionTwoCompartmentTest(
const std::string& rptDirectory);
162 void SimpleDiffusionFourCompartmentTest(
const std::string& rptDirectory);
163 void SimpleDiffusionHierarchyTest(
const std::string& rptDirectory);
164 void FacilitatedDiffusionTest(
const std::string& rptDirectory);
167 void PerfusionLimitedDiffusionTest(
SETestSuite& testSuite);
177 void BrainInjuryTest(
const std::string& rptDirectory);
184 void FourCompartmentTestSimple(
const std::string& sOutputDirectory);
185 void AcidBaseFourCompartmentTest(
const std::string& sOutputDirectory);
186 void FiveCompartmentTestWithDiffusion(
const std::string& sOutputDirectory);
187 void AcidBaseFourCompartmentTestWithProductionConsumption(
const std::string& sOutputDirectory);
188 void AcidBaseFiveCompartmentTestWithDiffusion(
const std::string& sOutputDirectory);
189 void AcidBaseFiveCompartmentTestWithProductionConsumptionAndDiffusion(
const std::string& sOutputDirectory);
191 void FourCompartmentTest(
bool usingAcidBase,
bool usingProductionConsumption,
bool usingDiffusion,
const std::string& sOutputDirectory);
193 bool usingProductionConsumption;
200 void AcidBaseMathTest(
const std::string& sOutputDirectory);
201 void AcidBaseFeedbackTest(
const std::string& sOutputDirectory);
202 void AcidBaseLimitsTest(
const std::string& sOutputDirectory);
203 void AcidBaseExtremeTest(
const std::string & rptDirectory);
204 void AcidBaseBloodGasTests(
const std::string& sOutputDirectory);
206 enum bloodType { ARTERIAL, VENOUS, CAPILLARY, RESPIRATORY_ACIDOSIS, METABOLIC_ALKALOSIS, METABOLIC_ACIDOSIS, RESPIRATORY_ALKALOSIS, CUSTOM };
207 void AcidBaseBloodGasTest(Controller& bg, bloodType compartment,
SETestSuite& testSuite);
213 void AerosolTest(
const std::string& sOutputDirectory);
215 void SizeIndependentDepositionEfficencyCoefficientsTest(
SETestSuite& suite,
SESubstance& substance,
double expectedMouthCoeff,
double expectedCarinaCoeff,
double expectedDeadSpaceCoeff,
double expectedAlveoliCoeff);
216 void DepositionFractionTest(
SETestSuite& suite,
SESubstance& substance,
double expectedMouthDepFrac,
double expectedCarinaDepFrac,
217 double expectedLeftDeadSpaceDepFrac,
double expectedLeftAlveoliDepFrac,
double expectedRightDeadSpaceDepFrac,
double expectedRightAlveoliDepFrac);
223 void ReadScenarios(
const std::string& sOutputDirectory);
224 void ReuseEngine(
const std::string& sOutputDirectory);
225 void SerializationTest(
const std::string& sTestDirectory);
226 void SetupPatientTest(
const std::string& sTestDirectory);
228 void ConditionCombinations(
const std::string& rptDirectory);
229 void SolverSpeedTest(
const std::string& sTestDirectory);
235 void SetupPatient(
SETestSuite& testSuite,
const std::string& sTestDirectory,
const std::string& sTestName,
SEPatient* patient,
SEPatient* expectedPatient,
bool expectedPass);
236 bool CheckSetupPatient(
SEPatient& setupPatient,
SEPatient& expectedPatient, std::vector<std::string>& errs);
241 void EmptyBlackBoxTest(
const std::string& sOutputDirectory);
242 void ImposeFlowBlackBoxTest(
const std::string& sOutputDirectory);
243 void ImposePressureAndFlowBlackBoxTest(
const std::string& sOutputDirectory);
Definition: PhysiologyEngine.h:70
Definition: SEPatient.h:13
Definition: SESubstance.h:15
Definition: SETestManager.h:10
Definition: SETestSuite.h:10