Adding test for EN_getnodevalue

This commit is contained in:
Michael Tryby
2019-03-12 13:35:24 -04:00
parent b86b1508cf
commit 32091830c6
3 changed files with 152 additions and 37 deletions

View File

@@ -18,12 +18,12 @@ using namespace boost;
BOOST_AUTO_TEST_SUITE (test_node) BOOST_AUTO_TEST_SUITE (node_props_after_open)
BOOST_FIXTURE_TEST_CASE(test_junc_props, FixtureOpenClose)
BOOST_FIXTURE_TEST_CASE(test_node_getvalue, FixtureOpenClose)
{ {
const auto junc_props = { int index;
const auto props = {
EN_ELEVATION, EN_ELEVATION,
EN_BASEDEMAND, EN_BASEDEMAND,
EN_PATTERN, EN_PATTERN,
@@ -34,45 +34,110 @@ BOOST_FIXTURE_TEST_CASE(test_node_getvalue, FixtureOpenClose)
//pressure //pressure
//quality //quality
}; };
const int num_props = 5; const size_t num_props = 5;
std::vector<double> test (num_props); std::vector<double> test (num_props);
double *value = test.data(); double *value = test.data();
error = EN_getnodeindex(ph, "11", &index);
std::vector<double> ref = {710.0, 150.0, 1.0, 0.0, 0.5}; std::vector<double> ref = {710.0, 150.0, 1.0, 0.0, 0.5};
for (EN_NodeProperty p : junc_props) { // Ranged for loop iterates over property set
error = EN_getnodevalue(ph, 2, p, value++); for (EN_NodeProperty p : props) {
error = EN_getnodevalue(ph, index, p, value++);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
} }
BOOST_CHECK_EQUAL_COLLECTIONS(ref.begin(), ref.end(), test.begin(), test.end()); BOOST_CHECK(check_cdd_double(test, ref, 3));
const auto tank_props = {
EN_ELEVATION,
EN_INITQUAL,
EN_TANKLEVEL,
EN_INITVOLUME,
EN_MIXMODEL,
EN_MIXZONEVOL,
//demand
//head
//pressure
//quality
EN_TANKDIAM,
EN_MINVOLUME,
EN_MAXVOLUME,
EN_VOLCURVE,
EN_MINLEVEL,
EN_MAXLEVEL,
EN_MIXFRACTION,
EN_TANK_KBULK,
EN_TANKVOLUME
};
} }
BOOST_FIXTURE_TEST_CASE(test_tank_props, FixtureOpenClose)
{
int index;
const auto props = {
EN_ELEVATION,
EN_TANKLEVEL,
EN_MINLEVEL,
EN_MAXLEVEL,
EN_TANKDIAM,
EN_MINVOLUME
};
const size_t num_props = 6;
std::vector<double> test (num_props);
double *value = test.data();
error = EN_getnodeindex(ph, "2", &index);
std::vector<double> ref = {850.0, 120.0, 100.0, 150.0, 50.5, 200296.167};
// Ranged for loop iterates over property set
for (EN_NodeProperty p : props) {
error = EN_getnodevalue(ph, index, p, value++);
BOOST_REQUIRE(error == 0);
}
BOOST_CHECK(check_cdd_double(test, ref, 3));
}
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE(node_props_after_step)
BOOST_FIXTURE_TEST_CASE(test_junc_props, FixtureAfterStep)
{
int index;
const auto props = {
EN_DEMAND,
EN_HEAD,
EN_PRESSURE,
EN_QUALITY
};
const size_t num_props = 4;
std::vector<double> test (num_props);
double *value = test.data();
error = EN_getnodeindex(ph, "11", &index);
std::vector<double> ref = {179.999, 991.574, 122.006, 0.857};
// Ranged for loop iterates over property set
for (EN_NodeProperty p : props) {
error = EN_getnodevalue(ph, index, p, value++);
BOOST_REQUIRE(error == 0);
}
BOOST_CHECK(check_cdd_double(test, ref, 3));
}
BOOST_FIXTURE_TEST_CASE(test_tank_props, FixtureAfterStep)
{
int index;
const auto props = {
EN_DEMAND,
EN_HEAD,
EN_PRESSURE,
EN_QUALITY
};
const size_t num_props = 4;
std::vector<double> test (num_props);
double *value = test.data();
error = EN_getnodeindex(ph, "2", &index);
std::vector<double> ref = {505.383, 978.138, 55.522, 0.911};
// Ranged for loop iterates over property set
for (EN_NodeProperty p : props) {
error = EN_getnodevalue(ph, index, p, value++);
BOOST_REQUIRE(error == 0);
}
BOOST_CHECK(check_cdd_double(test, ref, 3));
}
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()

View File

@@ -47,7 +47,7 @@ BOOST_AUTO_TEST_CASE (test_proj_create_delete)
BOOST_AUTO_TEST_CASE (test_proj_open_close) BOOST_AUTO_TEST_CASE (test_proj_open_close)
{ {
string path_inp(DATA_PATH_INP); string path_inp(DATA_PATH_NET1);
string path_rpt(DATA_PATH_RPT); string path_rpt(DATA_PATH_RPT);
string path_out(DATA_PATH_OUT); string path_out(DATA_PATH_OUT);
@@ -67,7 +67,7 @@ BOOST_AUTO_TEST_CASE(test_proj_savefile)
{ {
int error; int error;
string path_inp(DATA_PATH_INP); string path_inp(DATA_PATH_NET1);
string inp_save("test_reopen.inp"); string inp_save("test_reopen.inp");
string path_rpt(DATA_PATH_RPT); string path_rpt(DATA_PATH_RPT);
string path_out(DATA_PATH_OUT); string path_out(DATA_PATH_OUT);
@@ -111,7 +111,7 @@ BOOST_AUTO_TEST_CASE(test_proj_reopen, * unit_test::depends_on("test_proj/test_p
BOOST_AUTO_TEST_CASE(test_proj_run) BOOST_AUTO_TEST_CASE(test_proj_run)
{ {
string path_inp(DATA_PATH_INP); string path_inp(DATA_PATH_NET1);
string path_rpt(DATA_PATH_RPT); string path_rpt(DATA_PATH_RPT);
string path_out(DATA_PATH_OUT); string path_out(DATA_PATH_OUT);

View File

@@ -55,13 +55,13 @@ boost::test_tools::predicate_result check_string(std::string test, std::string r
} }
#define DATA_PATH_INP "./net1.inp" #define DATA_PATH_NET1 "./net1.inp"
#define DATA_PATH_RPT "./test.rpt" #define DATA_PATH_RPT "./test.rpt"
#define DATA_PATH_OUT "./test.out" #define DATA_PATH_OUT "./test.out"
struct FixtureOpenClose{ struct FixtureOpenClose{
FixtureOpenClose() { FixtureOpenClose() {
path_inp = std::string(DATA_PATH_INP); path_inp = std::string(DATA_PATH_NET1);
path_rpt = std::string(DATA_PATH_RPT); path_rpt = std::string(DATA_PATH_RPT);
path_out = std::string(DATA_PATH_OUT); path_out = std::string(DATA_PATH_OUT);
@@ -81,3 +81,53 @@ struct FixtureOpenClose{
int error; int error;
EN_Project ph; EN_Project ph;
}; };
struct FixtureAfterStep{
FixtureAfterStep() {
flag = 0;
tstop = 10800;
path_inp = std::string(DATA_PATH_NET1);
path_rpt = std::string(DATA_PATH_RPT);
path_out = std::string(DATA_PATH_OUT);
EN_createproject(&ph);
error = EN_open(ph, path_inp.c_str(), path_rpt.c_str(), path_out.c_str());
error = EN_solveH(ph);
BOOST_REQUIRE(error == 0);
error = EN_openQ(ph);
BOOST_REQUIRE(error == 0);
error = EN_initQ(ph, flag);
BOOST_REQUIRE(error == 0);
do {
error = EN_runQ(ph, &t);
BOOST_REQUIRE(error == 0);
error = EN_stepQ(ph, &tstep);
BOOST_REQUIRE(error == 0);
} while (tstep > 0 && t < tstop);
}
~FixtureAfterStep() {
error = EN_closeQ(ph);
BOOST_REQUIRE(error == 0);
error = EN_close(ph);
EN_deleteproject(&ph);
}
std::string path_inp;
std::string path_rpt;
std::string path_out;
int error, flag;
long t, tstep, tstop;
EN_Project ph;
};