Adding test for EN_getnodevalue
This commit is contained in:
@@ -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_node_getvalue, FixtureOpenClose)
|
||||
BOOST_FIXTURE_TEST_CASE(test_junc_props, FixtureOpenClose)
|
||||
{
|
||||
const auto junc_props = {
|
||||
int index;
|
||||
const auto props = {
|
||||
EN_ELEVATION,
|
||||
EN_BASEDEMAND,
|
||||
EN_PATTERN,
|
||||
@@ -34,45 +34,110 @@ BOOST_FIXTURE_TEST_CASE(test_node_getvalue, FixtureOpenClose)
|
||||
//pressure
|
||||
//quality
|
||||
};
|
||||
const int num_props = 5;
|
||||
const size_t num_props = 5;
|
||||
|
||||
std::vector<double> test (num_props);
|
||||
double *value = test.data();
|
||||
|
||||
error = EN_getnodeindex(ph, "11", &index);
|
||||
std::vector<double> ref = {710.0, 150.0, 1.0, 0.0, 0.5};
|
||||
|
||||
|
||||
for (EN_NodeProperty p : junc_props) {
|
||||
error = EN_getnodevalue(ph, 2, p, value++);
|
||||
// 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_EQUAL_COLLECTIONS(ref.begin(), ref.end(), test.begin(), test.end());
|
||||
|
||||
|
||||
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_CHECK(check_cdd_double(test, ref, 3));
|
||||
}
|
||||
|
||||
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()
|
||||
|
||||
@@ -47,7 +47,7 @@ BOOST_AUTO_TEST_CASE (test_proj_create_delete)
|
||||
|
||||
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_out(DATA_PATH_OUT);
|
||||
|
||||
@@ -67,7 +67,7 @@ BOOST_AUTO_TEST_CASE(test_proj_savefile)
|
||||
{
|
||||
int error;
|
||||
|
||||
string path_inp(DATA_PATH_INP);
|
||||
string path_inp(DATA_PATH_NET1);
|
||||
string inp_save("test_reopen.inp");
|
||||
string path_rpt(DATA_PATH_RPT);
|
||||
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)
|
||||
{
|
||||
string path_inp(DATA_PATH_INP);
|
||||
string path_inp(DATA_PATH_NET1);
|
||||
string path_rpt(DATA_PATH_RPT);
|
||||
string path_out(DATA_PATH_OUT);
|
||||
|
||||
|
||||
@@ -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_OUT "./test.out"
|
||||
|
||||
struct FixtureOpenClose{
|
||||
FixtureOpenClose() {
|
||||
path_inp = std::string(DATA_PATH_INP);
|
||||
path_inp = std::string(DATA_PATH_NET1);
|
||||
path_rpt = std::string(DATA_PATH_RPT);
|
||||
path_out = std::string(DATA_PATH_OUT);
|
||||
|
||||
@@ -81,3 +81,53 @@ struct FixtureOpenClose{
|
||||
int error;
|
||||
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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user