diff --git a/CMakeLists.txt b/CMakeLists.txt index de3b7b60..3427b198 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1635,6 +1635,14 @@ if (COOLPROP_CATCH_MODULE) target_link_libraries (CatchTestRunner ${CMAKE_DL_LIBS}) endif() add_test(ProcedureTests CatchTestRunner) + + if (COOLPROP_IWYU) + find_program(iwyu_path NAMES include-what-you-use iwyu) + if(NOT iwyu_path) + message(FATAL_ERROR "Could not find the program include-what-you-use") + endif() + set_property(TARGET CatchTestRunner PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${iwyu_path}) + endif() endif() if (COOLPROP_CPP_EXAMPLE_TEST) diff --git a/src/AbstractState.cpp b/src/AbstractState.cpp index 010ff52c..f7926aa2 100644 --- a/src/AbstractState.cpp +++ b/src/AbstractState.cpp @@ -934,23 +934,23 @@ TEST_CASE("Check AbstractState","[AbstractState]") { SECTION("bad backend") { - CHECK_THROWS(shared_ptr Water(CoolProp::AbstractState::factory("DEFINITELY_A_BAD_BACKEND", "Water"))); + CHECK_THROWS(shared_ptr(CoolProp::AbstractState::factory("DEFINITELY_A_BAD_BACKEND", "Water"))); } SECTION("good backend - bad fluid") { - CHECK_THROWS(shared_ptr Water(CoolProp::AbstractState::factory("HEOS", "DEFINITELY_A_BAD_FLUID"))); + CHECK_THROWS(shared_ptr(CoolProp::AbstractState::factory("HEOS", "DEFINITELY_A_BAD_FLUID"))); } SECTION("good backend - helmholtz") { - CHECK_NOTHROW(shared_ptr Water(CoolProp::AbstractState::factory("HEOS", "Water"))); + CHECK_NOTHROW(shared_ptr(CoolProp::AbstractState::factory("HEOS", "Water"))); } SECTION("good backend - incomp") { - CHECK_NOTHROW(shared_ptr Water(CoolProp::AbstractState::factory("INCOMP", "DEB"))); + CHECK_NOTHROW(shared_ptr(CoolProp::AbstractState::factory("INCOMP", "DEB"))); } SECTION("good backend - REFPROP") { - CHECK_NOTHROW(shared_ptr Water(CoolProp::AbstractState::factory("REFPROP", "Water"))); + CHECK_NOTHROW(shared_ptr(CoolProp::AbstractState::factory("REFPROP", "Water"))); } } diff --git a/src/Backends/Cubics/UNIFACLibrary.cpp b/src/Backends/Cubics/UNIFACLibrary.cpp index 00fc5c9f..64c66ab6 100644 --- a/src/Backends/Cubics/UNIFACLibrary.cpp +++ b/src/Backends/Cubics/UNIFACLibrary.cpp @@ -153,7 +153,7 @@ TEST_CASE("Check Poling example for UNIFAC", "[UNIFAC]") SECTION("Validate AC for acetone + n-pentane") { UNIFACLibrary::UNIFACParameterLibrary lib; - CHECK_NOTHROW(lib.populate(groups, interactions, acetone_pentane_groups);); + CHECK_NOTHROW(lib.populate(groups, interactions, acetone_pentane_groups)); UNIFAC::UNIFACMixture mix(lib,1.0); std::vector names; names.push_back("Acetone"); names.push_back("n-Pentane"); mix.set_components("name",names); @@ -161,7 +161,7 @@ TEST_CASE("Check Poling example for UNIFAC", "[UNIFAC]") std::vector z(2,0.047); z[1] = 1-z[0]; mix.set_mole_fractions(z); - CHECK_NOTHROW(mix.set_temperature(307);); + CHECK_NOTHROW(mix.set_temperature(307)); double lngammaR0 = mix.ln_gamma_R(1.0/307,0,0); double lngammaR1 = mix.ln_gamma_R(1.0/307,1,0); diff --git a/src/Backends/Helmholtz/FlashRoutines.cpp b/src/Backends/Helmholtz/FlashRoutines.cpp index 1ffd206b..fa6a0168 100644 --- a/src/Backends/Helmholtz/FlashRoutines.cpp +++ b/src/Backends/Helmholtz/FlashRoutines.cpp @@ -2092,7 +2092,7 @@ TEST_CASE("Test critical points for nitrogen + ethane with HEOS","[critical_poin HEOS->set_mole_fractions(z); CAPTURE(z0); std::vector pts; - CHECK_NOTHROW(pts = HEOS->all_critical_points();); + CHECK_NOTHROW(pts = HEOS->all_critical_points()); } } @@ -2107,7 +2107,7 @@ TEST_CASE("Test critical points for nitrogen + ethane with PR","[critical_points HEOS->set_mole_fractions(z); CAPTURE(z0); std::vector pts; - CHECK_NOTHROW(pts = HEOS->all_critical_points();); + CHECK_NOTHROW(pts = HEOS->all_critical_points()); } } diff --git a/src/Backends/Helmholtz/MixtureDerivatives.cpp b/src/Backends/Helmholtz/MixtureDerivatives.cpp index 93376bb5..77636538 100644 --- a/src/Backends/Helmholtz/MixtureDerivatives.cpp +++ b/src/Backends/Helmholtz/MixtureDerivatives.cpp @@ -1162,18 +1162,18 @@ public: void one_comp(const std::string &name, one_mole_fraction_pointer f, zero_mole_fraction_pointer g, derivative wrt = CONST_TAU_DELTA){ for (int i = 0; i < 4; ++i){ double analytic; - CHECK_NOTHROW(analytic = f(*HEOS, i, xN);); + CHECK_NOTHROW(analytic = f(*HEOS, i, xN)); double numeric = -10000; if (wrt == CONST_TAU_DELTA){ if (HEOS->get_mole_fractions()[i] > dz){ - CHECK_NOTHROW(numeric = (g(*HEOS_plus_z[i], xN) - g(*HEOS_minus_z[i], xN))/(2*dz);); + CHECK_NOTHROW(numeric = (g(*HEOS_plus_z[i], xN) - g(*HEOS_minus_z[i], xN))/(2*dz)); } else{ - CHECK_NOTHROW(numeric = (-3*g(*HEOS, xN) + 4*g(*HEOS_plus_z[i], xN) - g(*HEOS_plus_2z[i], xN))/(2*dz);); + CHECK_NOTHROW(numeric = (-3*g(*HEOS, xN) + 4*g(*HEOS_plus_z[i], xN) - g(*HEOS_plus_2z[i], xN))/(2*dz)); } } else if (wrt == CONST_TRHO){ - CHECK_NOTHROW(numeric = (g(*HEOS_plus_z__constTrho[i], xN) - g(*HEOS_minus_z__constTrho[i], xN))/(2*dz);); + CHECK_NOTHROW(numeric = (g(*HEOS_plus_z__constTrho[i], xN) - g(*HEOS_minus_z__constTrho[i], xN))/(2*dz)); } CAPTURE(name); @@ -1219,11 +1219,11 @@ public: double numeric = 500; if (HEOS->get_mole_fractions()[j] > 2*dz){ // Second order centered difference in composition - CHECK_NOTHROW(numeric = (g(*HEOS_plus_z[j], i, xN) - g(*HEOS_minus_z[j], i, xN))/(2*dz);); + CHECK_NOTHROW(numeric = (g(*HEOS_plus_z[j], i, xN) - g(*HEOS_minus_z[j], i, xN))/(2*dz)); } else{ // Forward difference in composition - CHECK_NOTHROW(numeric = (-3*g(*HEOS, i, xN) + 4*g(*HEOS_plus_z[j], i, xN) - g(*HEOS_plus_2z[j], i, xN))/(2*dz);); + CHECK_NOTHROW(numeric = (-3*g(*HEOS, i, xN) + 4*g(*HEOS_plus_z[j], i, xN) - g(*HEOS_plus_2z[j], i, xN))/(2*dz)); } CAPTURE(name); CAPTURE(i); @@ -1269,10 +1269,10 @@ public: double analytic = f(*HEOS, i, j, k, xN); double numeric; if (HEOS->get_mole_fractions()[i] > 2*dz){ - CHECK_NOTHROW(numeric = (g(*HEOS_plus_z[k], i, j, xN) - g(*HEOS_minus_z[k], i, j, xN))/(2*dz);); + CHECK_NOTHROW(numeric = (g(*HEOS_plus_z[k], i, j, xN) - g(*HEOS_minus_z[k], i, j, xN))/(2*dz)); } else{ - CHECK_NOTHROW(numeric = (-3*g(*HEOS, i, j, xN) + 4*g(*HEOS_plus_z[k], i, j, xN) - g(*HEOS_plus_2z[k], i, j, xN))/(2*dz);); + CHECK_NOTHROW(numeric = (-3*g(*HEOS, i, j, xN) + 4*g(*HEOS_plus_z[k], i, j, xN) - g(*HEOS_plus_2z[k], i, j, xN))/(2*dz)); } CAPTURE(name); CAPTURE(i); diff --git a/src/Backends/REFPROP/REFPROPMixtureBackend.cpp b/src/Backends/REFPROP/REFPROPMixtureBackend.cpp index 40d350a9..4007e7dd 100644 --- a/src/Backends/REFPROP/REFPROPMixtureBackend.cpp +++ b/src/Backends/REFPROP/REFPROPMixtureBackend.cpp @@ -2105,11 +2105,11 @@ TEST_CASE("Check REFPROP and CoolProp values agree","[REFPROP]") shared_ptr S1(CoolProp::AbstractState::factory("HEOS", (*it))); double Tr = S1->T_critical(); - CHECK_NOTHROW(S1->update(CoolProp::QT_INPUTS, 0, Tr*0.9);); + CHECK_NOTHROW(S1->update(CoolProp::QT_INPUTS, 0, Tr*0.9)); double rho_CP = S1->rhomolar(); shared_ptr S2(CoolProp::AbstractState::factory("REFPROP", RPName)); - CHECK_NOTHROW(S2->update(CoolProp::QT_INPUTS, 0, Tr*0.9);); + CHECK_NOTHROW(S2->update(CoolProp::QT_INPUTS, 0, Tr*0.9)); double rho_RP = S2->rhomolar(); CAPTURE(Name); @@ -2166,12 +2166,12 @@ TEST_CASE("Check REFPROP and CoolProp values agree","[REFPROP]") shared_ptr S1(CoolProp::AbstractState::factory("HEOS", (*it))); double Tr = S1->T_critical(); - CHECK_NOTHROW(S1->update(CoolProp::QT_INPUTS, 0, 0.9*Tr);); + CHECK_NOTHROW(S1->update(CoolProp::QT_INPUTS, 0, 0.9*Tr)); double h_CP = S1->hmass(); double s_CP = S1->smass(); shared_ptr S2(CoolProp::AbstractState::factory("REFPROP", RPName)); - CHECK_NOTHROW(S2->update(CoolProp::QT_INPUTS, 0, 0.9*Tr);); + CHECK_NOTHROW(S2->update(CoolProp::QT_INPUTS, 0, 0.9*Tr)); double h_RP = S2->hmass(); double s_RP = S2->smass(); diff --git a/src/CoolProp.cpp b/src/CoolProp.cpp index 4c4a74d3..a2ea87b8 100644 --- a/src/CoolProp.cpp +++ b/src/CoolProp.cpp @@ -680,40 +680,40 @@ TEST_CASE("Check inputs to PropsSI","[PropsSI]") std::vector outputs(1,"T"); outputs.push_back("Dmolar"); std::vector > IO; std::vector fluids(1, "R410A.mix"); - CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z);); + CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z)); }; SECTION("Single state, two outputs"){ std::vector p(1, 101325), Q(1, 1.0), z(1, 1.0); std::vector outputs(1,"T"); outputs.push_back("Dmolar"); std::vector fluids(1, "Water"); - CHECK_NOTHROW(std::vector > IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z);); + CHECK_NOTHROW(CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z)); }; SECTION("Single state, two bad outputs"){ std::vector p(1, 101325), Q(1, 1.0), z(1, 1.0); std::vector > IO; std::vector outputs(1,"???????"); outputs.push_back("?????????"); std::vector fluids(1, "Water"); - CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z);); + CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z)); CHECK(IO.size() == 0); }; SECTION("Two states, one output"){ std::vector p(2, 101325), Q(2, 1.0), z(1, 1.0); std::vector outputs(1,"T"); std::vector fluids(1, "Water"); - CHECK_NOTHROW(std::vector > IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z);); + CHECK_NOTHROW(CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z)); }; SECTION("Two states, two outputs"){ std::vector p(2, 101325), Q(2, 1.0), z(1, 1.0); std::vector outputs(1,"T"); outputs.push_back("Dmolar"); std::vector fluids(1, "Water"); - CHECK_NOTHROW(std::vector > IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z);); + CHECK_NOTHROW(CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z)); }; SECTION("cp and its derivative representation"){ std::vector p(1, 101325), Q(1, 1.0), z(1, 1.0); std::vector > IO; std::vector outputs(1,"Cpmolar"); outputs.push_back("d(Hmolar)/d(T)|P"); std::vector fluids(1, "Water"); - CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z);); + CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z)); std::string errstring = get_global_param_string("errstring"); CAPTURE(errstring); REQUIRE(!IO.empty()); @@ -726,7 +726,7 @@ TEST_CASE("Check inputs to PropsSI","[PropsSI]") std::vector > IO; std::vector outputs(1,"Cpmolar"); outputs.push_back("d(Hmolar)/d(T)|P"); std::vector fluids(1, "????????"); - CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z);); + CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z)); std::string errstring = get_global_param_string("errstring"); CAPTURE(errstring); REQUIRE(IO.empty()); @@ -736,7 +736,7 @@ TEST_CASE("Check inputs to PropsSI","[PropsSI]") std::vector > IO; std::vector outputs(1,"T"); std::vector fluids(1, "Water&Ethanol"); - CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z);); + CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z)); std::string errstring = get_global_param_string("errstring"); CAPTURE(errstring); REQUIRE(IO.empty()); @@ -746,7 +746,7 @@ TEST_CASE("Check inputs to PropsSI","[PropsSI]") std::vector > IO; std::vector outputs(1,"Cpmolar"); outputs.push_back("d(Hmolar)/d(T)|P"); std::vector fluids(1, "Water"); - CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z);); + CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"P",p,"Q",Q,"HEOS",fluids,z)); std::string errstring = get_global_param_string("errstring"); CAPTURE(errstring); REQUIRE(IO.empty()); @@ -756,7 +756,7 @@ TEST_CASE("Check inputs to PropsSI","[PropsSI]") std::vector > IO; std::vector outputs(1,"Cpmolar"); outputs.push_back("d(Hmolar)/d(T)|P"); std::vector fluids(1, "Water"); - CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"Q",Q,"Q",Q,"HEOS",fluids,z);); + CHECK_NOTHROW(IO = CoolProp::PropsSImulti(outputs,"Q",Q,"Q",Q,"HEOS",fluids,z)); std::string errstring = get_global_param_string("errstring"); CAPTURE(errstring); REQUIRE(IO.empty()); diff --git a/src/DataStructures.cpp b/src/DataStructures.cpp index 428ac48f..d3d2f13a 100644 --- a/src/DataStructures.cpp +++ b/src/DataStructures.cpp @@ -635,6 +635,7 @@ std::string get_backend_string(backends backend) { #ifdef ENABLE_CATCH #include "catch.hpp" +#include TEST_CASE("Check that all parameters are described","") { diff --git a/src/Tests/CoolProp-Tests.cpp b/src/Tests/CoolProp-Tests.cpp index 319844dd..54de31a6 100644 --- a/src/Tests/CoolProp-Tests.cpp +++ b/src/Tests/CoolProp-Tests.cpp @@ -1426,7 +1426,7 @@ TEST_CASE("Triple point checks", "[triple_point]") ss1 << "Minimum saturation temperature state matches for liquid " << fluids[i]; SECTION(ss1.str(), "") { - REQUIRE_NOTHROW(HEOS->update(CoolProp::QT_INPUTS, 0, HEOS->Ttriple());); + REQUIRE_NOTHROW(HEOS->update(CoolProp::QT_INPUTS, 0, HEOS->Ttriple())); double p_EOS = HEOS->p(); double p_sat_min_liquid = HEOS->get_components()[0].EOS().sat_min_liquid.p; double err_sat_min_liquid = std::abs(p_EOS-p_sat_min_liquid)/p_sat_min_liquid; @@ -1440,7 +1440,7 @@ TEST_CASE("Triple point checks", "[triple_point]") ss2 << "Minimum saturation temperature state matches for vapor " << fluids[i]; SECTION(ss2.str(), "") { - REQUIRE_NOTHROW(HEOS->update(CoolProp::QT_INPUTS, 1, HEOS->Ttriple());); + REQUIRE_NOTHROW(HEOS->update(CoolProp::QT_INPUTS, 1, HEOS->Ttriple())); double p_EOS = HEOS->p(); double p_sat_min_vapor = HEOS->get_components()[0].EOS().sat_min_vapor.p; @@ -1455,7 +1455,7 @@ TEST_CASE("Triple point checks", "[triple_point]") ss3 << "Minimum saturation temperature state matches for vapor " << fluids[i]; SECTION(ss3.str(), "") { - REQUIRE_NOTHROW(HEOS->update(CoolProp::PQ_INPUTS, HEOS->p_triple(), 1);); + REQUIRE_NOTHROW(HEOS->update(CoolProp::PQ_INPUTS, HEOS->p_triple(), 1)); double T_EOS = HEOS->T(); double T_sat_min_vapor = HEOS->get_components()[0].EOS().sat_min_vapor.T; @@ -1469,7 +1469,7 @@ TEST_CASE("Triple point checks", "[triple_point]") ss4 << "Minimum saturation temperature state matches for liquid " << fluids[i]; SECTION(ss4.str(), "") { - REQUIRE_NOTHROW(HEOS->update(CoolProp::PQ_INPUTS, HEOS->p_triple(), 0);); + REQUIRE_NOTHROW(HEOS->update(CoolProp::PQ_INPUTS, HEOS->p_triple(), 0)); double T_EOS = HEOS->T(); double T_sat_min_vapor = HEOS->get_components()[0].EOS().sat_min_vapor.T; double err_sat_min_vapor = std::abs(T_EOS-T_sat_min_vapor); @@ -1531,14 +1531,14 @@ public: void check_at_Tc(const shared_ptr &AS){ CAPTURE("Check @ Tc"); CAPTURE(name); - CHECK_NOTHROW(AS->update(QT_INPUTS, 0, Tc);); + CHECK_NOTHROW(AS->update(QT_INPUTS, 0, Tc)); } void check_QT(const shared_ptr &AS, double T){ std::string test_name = "Check --> Tc"; CAPTURE(test_name); CAPTURE(name); CAPTURE(T); - CHECK_NOTHROW(AS->update(QT_INPUTS, 0, T);); + CHECK_NOTHROW(AS->update(QT_INPUTS, 0, T)); } }; TEST_CASE_METHOD(SatTFixture, "Test that saturation solvers solve all the way to T = Tc", "[sat_T_to_Tc]"){