Merge pull request #457 from michaeltryby/dev

Minor update to unit tests
This commit is contained in:
Michael Tryby
2019-04-12 16:17:53 -04:00
committed by GitHub
4 changed files with 287 additions and 222 deletions

View File

View File

@@ -20,6 +20,41 @@
BOOST_AUTO_TEST_SUITE (test_link) BOOST_AUTO_TEST_SUITE (test_link)
BOOST_FIXTURE_TEST_CASE(test_adddelete_link, FixtureInitClose)
{
int index;
// Build a network
EN_addnode(ph, (char *)"N1", EN_JUNCTION);
EN_addnode(ph, (char *)"N2", EN_JUNCTION);
EN_addnode(ph, (char *)"N3", EN_RESERVOIR);
error = EN_addlink(ph, (char *)"L1", EN_PUMP, (char *)"N3", (char *)"N1");
BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"L2", EN_PIPE, (char *)"N1", (char *)"N3");
BOOST_REQUIRE(error == 0);
error = EN_getlinkindex(ph, (char *)"L2", &index);
BOOST_REQUIRE(error == 0);
error = EN_deletelink(ph, index, EN_UNCONDITIONAL);
BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"L3", EN_PIPE, (char *)"N1", (char *)"N2");
BOOST_REQUIRE(error == 0);
error = EN_getlinkindex(ph, (char *)"L1", &index);
BOOST_REQUIRE(error == 0);
error = EN_deletelink(ph, index, EN_UNCONDITIONAL);
BOOST_REQUIRE(error == 0);
error = EN_getlinkindex(ph, (char *)"L3", &index);
BOOST_REQUIRE(error == 0);
error = EN_deletelink(ph, index, EN_UNCONDITIONAL);
BOOST_REQUIRE(error == 0);
}
BOOST_AUTO_TEST_CASE(test_setlinktype) BOOST_AUTO_TEST_CASE(test_setlinktype)
{ {
int error = 0; int error = 0;

View File

@@ -1,25 +1,25 @@
/* /*
****************************************************************************** ******************************************************************************
Project: OWA EPANET Project: OWA EPANET
Version: 2.2 Version: 2.2
Module: test_net_builder.cpp Module: test_net_builder.cpp
Description: Tests EPANET toolkit api functions Description: Tests EPANET toolkit api functions
Authors: see AUTHORS Authors: see AUTHORS
Copyright: see AUTHORS Copyright: see AUTHORS
License: see LICENSE License: see LICENSE
Last Updated: 03/21/2019 Last Updated: 04/12/2019
****************************************************************************** ******************************************************************************
*/ */
#define BOOST_TEST_MODULE net_builder #define BOOST_TEST_MODULE net_builder
#ifdef _DEBUG #ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC #define _CRTDBG_MAP_ALLOC
#include <stdlib.h> #include <stdlib.h>
#include <crtdbg.h> #include <crtdbg.h>
#else #else
#include <stdlib.h> #include <stdlib.h>
#endif #endif
#include <boost/test/included/unit_test.hpp> #include <boost/test/included/unit_test.hpp>
@@ -33,20 +33,20 @@
struct FixtureInitClose { struct FixtureInitClose {
FixtureInitClose() { FixtureInitClose() {
error = 0; error = 0;
ph = NULL; ph = NULL;
EN_createproject(&ph); EN_createproject(&ph);
EN_init(ph, DATA_PATH_RPT, DATA_PATH_OUT, EN_GPM, EN_HW); EN_init(ph, DATA_PATH_RPT, DATA_PATH_OUT, EN_GPM, EN_HW);
} }
~FixtureInitClose() { ~FixtureInitClose() {
EN_close(ph); EN_close(ph);
EN_deleteproject(&ph); EN_deleteproject(&ph);
} }
int error; int error;
EN_Project ph; EN_Project ph;
}; };
@@ -105,163 +105,163 @@ BOOST_AUTO_TEST_SUITE(test_net_builder)
BOOST_FIXTURE_TEST_CASE(test_build_net1, FixtureInitClose) BOOST_FIXTURE_TEST_CASE(test_build_net1, FixtureInitClose)
{ {
int flag = 00; int flag = 00;
long t, tstep; long t, tstep;
int i, ind, Lindex, Nindex, Cindex; int i, ind, Lindex, Nindex, Cindex;
double h_build; double h_build;
// now we build Net1 from scratch... // now we build Net1 from scratch...
char juncs[9][10] = { "10", "11", "12", "13", "21", "22", "23", "31", "32" }; char juncs[9][10] = { "10", "11", "12", "13", "21", "22", "23", "31", "32" };
double e[9] = { 710, 710, 700, 695, 700, 695, 690, 700, 710 }; double e[9] = { 710, 710, 700, 695, 700, 695, 690, 700, 710 };
double d[9] = { 0, 150, 150, 100, 150, 200, 150, 100, 100 }; double d[9] = { 0, 150, 150, 100, 150, 200, 150, 100, 100 };
double X[9] = { 20, 30, 50, 70, 30, 50, 70, 30, 50 }; double X[9] = { 20, 30, 50, 70, 30, 50, 70, 30, 50 };
double Y[9] = { 70, 70, 70, 70, 40, 40, 40, 10, 10 }; double Y[9] = { 70, 70, 70, 70, 40, 40, 40, 10, 10 };
double L[12] = { 10530, 5280, 5280, 5280, 5280, 5280, 200, 5280, 5280, 5280, 5280, 5280 }; double L[12] = { 10530, 5280, 5280, 5280, 5280, 5280, 200, 5280, 5280, 5280, 5280, 5280 };
double dia[12] = { 18, 14, 10, 10, 12, 6, 18, 10, 12, 8, 8, 6 }; double dia[12] = { 18, 14, 10, 10, 12, 6, 18, 10, 12, 8, 8, 6 };
double P[12] = { 1.0f, 1.2f, 1.4f, 1.6f, 1.4f, 1.2f, 1.0f, 0.8f, 0.6f, 0.4f, 0.6f, 0.8f }; double P[12] = { 1.0f, 1.2f, 1.4f, 1.6f, 1.4f, 1.2f, 1.0f, 0.8f, 0.6f, 0.4f, 0.6f, 0.8f };
error = EN_addpattern(ph, (char *)"pat1"); error = EN_addpattern(ph, (char *)"pat1");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setpattern(ph, 1, P, 12); error = EN_setpattern(ph, 1, P, 12);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
//error = EN_setoption(ph, EN_DEFDEMANDPAT, 1); //error = EN_setoption(ph, EN_DEFDEMANDPAT, 1);
//BOOST_REQUIRE(error == 0); //BOOST_REQUIRE(error == 0);
for (i = 0; i < 9; i++) for (i = 0; i < 9; i++)
{ {
error = EN_addnode(ph, juncs[i], EN_JUNCTION); error = EN_addnode(ph, juncs[i], EN_JUNCTION);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, i + 1, EN_ELEVATION, e[i]); error = EN_setnodevalue(ph, i + 1, EN_ELEVATION, e[i]);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, i + 1, EN_BASEDEMAND, d[i]); error = EN_setnodevalue(ph, i + 1, EN_BASEDEMAND, d[i]);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, i+1, EN_PATTERN, 1); error = EN_setnodevalue(ph, i+1, EN_PATTERN, 1);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setcoord(ph, i + 1, X[i], Y[i]); error = EN_setcoord(ph, i + 1, X[i], Y[i]);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
//error = EN_setdemandpattern(ph, i + 1, 1, 1); //error = EN_setdemandpattern(ph, i + 1, 1, 1);
//BOOST_REQUIRE(error == 0); //BOOST_REQUIRE(error == 0);
} }
error = EN_addnode(ph, (char *)"9", EN_RESERVOIR); error = EN_addnode(ph, (char *)"9", EN_RESERVOIR);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setcoord(ph, 10, 10, 70); error = EN_setcoord(ph, 10, 10, 70);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, 10, EN_ELEVATION, 800); error = EN_setnodevalue(ph, 10, EN_ELEVATION, 800);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addnode(ph, (char *)"2", EN_TANK); error = EN_addnode(ph, (char *)"2", EN_TANK);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setcoord(ph, 11, 50, 90); error = EN_setcoord(ph, 11, 50, 90);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, 11, EN_TANKDIAM, 50.5); error = EN_setnodevalue(ph, 11, EN_TANKDIAM, 50.5);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, 11, EN_ELEVATION, 850); error = EN_setnodevalue(ph, 11, EN_ELEVATION, 850);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, 11, EN_MAXLEVEL, 150); error = EN_setnodevalue(ph, 11, EN_MAXLEVEL, 150);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, 11, EN_TANKLEVEL, 120); error = EN_setnodevalue(ph, 11, EN_TANKLEVEL, 120);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, 11, EN_MINLEVEL, 100); error = EN_setnodevalue(ph, 11, EN_MINLEVEL, 100);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, 11, EN_MIXFRACTION, 1); error = EN_setnodevalue(ph, 11, EN_MIXFRACTION, 1);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"10", EN_PIPE, (char *)"10", (char *)"11"); error = EN_addlink(ph, (char *)"10", EN_PIPE, (char *)"10", (char *)"11");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"11", EN_PIPE, (char *)"11", (char *)"12"); error = EN_addlink(ph, (char *)"11", EN_PIPE, (char *)"11", (char *)"12");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"12", EN_PIPE, (char *)"12", (char *)"13"); error = EN_addlink(ph, (char *)"12", EN_PIPE, (char *)"12", (char *)"13");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"21", EN_PIPE, (char *)"21", (char *)"22"); error = EN_addlink(ph, (char *)"21", EN_PIPE, (char *)"21", (char *)"22");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"22", EN_PIPE, (char *)"22", (char *)"23"); error = EN_addlink(ph, (char *)"22", EN_PIPE, (char *)"22", (char *)"23");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"31", EN_PIPE, (char *)"31", (char *)"32"); error = EN_addlink(ph, (char *)"31", EN_PIPE, (char *)"31", (char *)"32");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"110", EN_PIPE, (char *)"2", (char *)"12"); error = EN_addlink(ph, (char *)"110", EN_PIPE, (char *)"2", (char *)"12");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"111", EN_PIPE, (char *)"11", (char *)"21"); error = EN_addlink(ph, (char *)"111", EN_PIPE, (char *)"11", (char *)"21");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"112", EN_PIPE, (char *)"12", (char *)"22"); error = EN_addlink(ph, (char *)"112", EN_PIPE, (char *)"12", (char *)"22");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"113", EN_PIPE, (char *)"13", (char *)"23"); error = EN_addlink(ph, (char *)"113", EN_PIPE, (char *)"13", (char *)"23");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"121", EN_PIPE, (char *)"21", (char *)"31"); error = EN_addlink(ph, (char *)"121", EN_PIPE, (char *)"21", (char *)"31");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"122", EN_PIPE, (char *)"22", (char *)"32"); error = EN_addlink(ph, (char *)"122", EN_PIPE, (char *)"22", (char *)"32");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
for (i = 0; i < 12; i++) for (i = 0; i < 12; i++)
{ {
error = EN_setlinkvalue(ph, i + 1, EN_LENGTH, L[i]); error = EN_setlinkvalue(ph, i + 1, EN_LENGTH, L[i]);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setlinkvalue(ph, i + 1, EN_DIAMETER, dia[i]); error = EN_setlinkvalue(ph, i + 1, EN_DIAMETER, dia[i]);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
} }
error = EN_addlink(ph, (char *)"9", EN_PUMP, (char *)"9", (char *)"10"); error = EN_addlink(ph, (char *)"9", EN_PUMP, (char *)"9", (char *)"10");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addcurve(ph, (char *)"1"); error = EN_addcurve(ph, (char *)"1");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setcurvevalue(ph, 1, 1, 1500, 250); error = EN_setcurvevalue(ph, 1, 1, 1500, 250);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_getlinkindex(ph, (char *)"9", &ind); error = EN_getlinkindex(ph, (char *)"9", &ind);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setheadcurveindex(ph, ind, 1); error = EN_setheadcurveindex(ph, ind, 1);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_settimeparam(ph, EN_DURATION, 24 * 3600); error = EN_settimeparam(ph, EN_DURATION, 24 * 3600);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_settimeparam(ph, EN_PATTERNSTEP, 2 * 3600); error = EN_settimeparam(ph, EN_PATTERNSTEP, 2 * 3600);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_getlinkindex(ph, (char *)"9", &Lindex); error = EN_getlinkindex(ph, (char *)"9", &Lindex);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_getnodeindex(ph, (char *)"2", &Nindex); error = EN_getnodeindex(ph, (char *)"2", &Nindex);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
// Add controls // Add controls
error = EN_addcontrol(ph, EN_LOWLEVEL, Lindex, 1, Nindex, 110, &Cindex); error = EN_addcontrol(ph, EN_LOWLEVEL, Lindex, 1, Nindex, 110, &Cindex);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addcontrol(ph, EN_HILEVEL, Lindex, 0, Nindex, 140, &Cindex); error = EN_addcontrol(ph, EN_HILEVEL, Lindex, 0, Nindex, 140, &Cindex);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_openH(ph); error = EN_openH(ph);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_initH(ph, 0); error = EN_initH(ph, 0);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
do { do {
error = EN_runH(ph, &t); error = EN_runH(ph, &t);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
// this is the head at the end of the simulation after building the network *without* saving it to file // this is the head at the end of the simulation after building the network *without* saving it to file
error = EN_getnodevalue(ph, Nindex, EN_HEAD, &h_build); error = EN_getnodevalue(ph, Nindex, EN_HEAD, &h_build);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_nextH(ph, &tstep); error = EN_nextH(ph, &tstep);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
} while (tstep > 0); } while (tstep > 0);
error = EN_closeH(ph); error = EN_closeH(ph);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_saveinpfile(ph, "net_builder.inp"); error = EN_saveinpfile(ph, "net_builder.inp");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
} }
BOOST_AUTO_TEST_CASE(test_open_net1, * boost::unit_test::depends_on("test_net_builder/test_build_net1")) BOOST_AUTO_TEST_CASE(test_open_net1, * boost::unit_test::depends_on("test_net_builder/test_build_net1"))
{ {
int error = 0; int error = 0;
int flag = 00; int flag = 00;
long t, tstep; long t, tstep;
int Nindex = -1; int Nindex = -1;
double h_orig = 0.0, h_build = 0.0, h_build_loaded = 0.0; double h_orig = 0.0, h_build = 0.0, h_build_loaded = 0.0;
EN_Project ph = NULL; EN_Project ph = NULL;
// now we load the netwok we just built and saved // now we load the netwok we just built and saved
EN_createproject(&ph); EN_createproject(&ph);
error = EN_open(ph, "net_builder.inp", DATA_PATH_RPT, DATA_PATH_OUT); error = EN_open(ph, "net_builder.inp", DATA_PATH_RPT, DATA_PATH_OUT);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_getnodeindex(ph, (char *)"2", &Nindex); error = EN_getnodeindex(ph, (char *)"2", &Nindex);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_openH(ph); error = EN_openH(ph);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
@@ -292,86 +292,86 @@ BOOST_AUTO_TEST_CASE(test_open_net1, * boost::unit_test::depends_on("test_net_bu
// if we got this far we can compare results // if we got this far we can compare results
// compare the original to the build & saved network // compare the original to the build & saved network
// BOOST_CHECK(abs(h_orig - h_build_loaded) < 0.0001); // BOOST_CHECK(abs(h_orig - h_build_loaded) < 0.0001);
// compare the original to the build without saving // compare the original to the build without saving
// BOOST_CHECK(abs(h_orig - h_build) < 0.0001); // BOOST_CHECK(abs(h_orig - h_build) < 0.0001);
} }
BOOST_FIXTURE_TEST_CASE(test_save_net2, FixtureInitClose) BOOST_FIXTURE_TEST_CASE(test_save_net2, FixtureInitClose)
{ {
//char id[EN_MAXID+1]; //char id[EN_MAXID+1];
double p1_1, p2_1; // p1_2, p2_2; double p1_1, p2_1; // p1_2, p2_2;
double q1_1, q2_1; // q1_2, q2_2; double q1_1, q2_1; // q1_2, q2_2;
// Build a network // Build a network
error = EN_addnode(ph, (char *)"N1", EN_JUNCTION); error = EN_addnode(ph, (char *)"N1", EN_JUNCTION);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addnode(ph, (char *)"N2", EN_JUNCTION); error = EN_addnode(ph, (char *)"N2", EN_JUNCTION);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addnode(ph, (char *)"N3", EN_RESERVOIR); error = EN_addnode(ph, (char *)"N3", EN_RESERVOIR);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addnode(ph, (char *)"N4", EN_TANK); error = EN_addnode(ph, (char *)"N4", EN_TANK);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"L1", EN_PUMP, (char *)"N3", (char *)"N1"); error = EN_addlink(ph, (char *)"L1", EN_PUMP, (char *)"N3", (char *)"N1");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"L2", EN_PIPE, (char *)"N1", (char *)"N3"); error = EN_addlink(ph, (char *)"L2", EN_PIPE, (char *)"N1", (char *)"N3");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addlink(ph, (char *)"L3", EN_PIPE, (char *)"N1", (char *)"N2"); error = EN_addlink(ph, (char *)"L3", EN_PIPE, (char *)"N1", (char *)"N2");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_addcurve(ph, (char *)"C1"); error = EN_addcurve(ph, (char *)"C1");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
// Set network data using the new helper functions // Set network data using the new helper functions
error = EN_setcurvevalue(ph, 1, 1, 1500, 250); error = EN_setcurvevalue(ph, 1, 1, 1500, 250);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setjuncdata(ph, 1, 700, 500, (char *)""); error = EN_setjuncdata(ph, 1, 700, 500, (char *)"");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setjuncdata(ph, 2, 710, 500, (char *)""); error = EN_setjuncdata(ph, 2, 710, 500, (char *)"");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setnodevalue(ph, 3, EN_ELEVATION, 800); error = EN_setnodevalue(ph, 3, EN_ELEVATION, 800);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_settankdata(ph, 4, 850, 120, 100, 150, 50.5, 0, (char *)""); error = EN_settankdata(ph, 4, 850, 120, 100, 150, 50.5, 0, (char *)"");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setlinkvalue(ph, 1, EN_PUMP_HCURVE, 1); error = EN_setlinkvalue(ph, 1, EN_PUMP_HCURVE, 1);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setpipedata(ph, 2, 10560, 12, 100, 0); error = EN_setpipedata(ph, 2, 10560, 12, 100, 0);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_setpipedata(ph, 3, 5280, 14, 100, 0); error = EN_setpipedata(ph, 3, 5280, 14, 100, 0);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
// Run hydraulics // Run hydraulics
error = EN_solveH(ph); error = EN_solveH(ph);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
// Save results // Save results
error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p1_1); error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p1_1);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_getnodevalue(ph, 2, EN_PRESSURE, &p2_1); error = EN_getnodevalue(ph, 2, EN_PRESSURE, &p2_1);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_getlinkvalue(ph, 1, EN_FLOW, &q1_1); error = EN_getlinkvalue(ph, 1, EN_FLOW, &q1_1);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_getlinkvalue(ph, 2, EN_FLOW, &q2_1); error = EN_getlinkvalue(ph, 2, EN_FLOW, &q2_1);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
// Save project // Save project
error = EN_saveinpfile(ph, "netbuilder_test2.inp"); error = EN_saveinpfile(ph, "netbuilder_test2.inp");
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
} }
BOOST_AUTO_TEST_CASE(test_reopen_net2, *boost::unit_test::depends_on("test_net_builder/test_save_net2")) BOOST_AUTO_TEST_CASE(test_reopen_net2, *boost::unit_test::depends_on("test_net_builder/test_save_net2"))
{ {
int error, index; int error, index;
double p1_2, p2_2; double p1_2, p2_2;
double q1_2, q2_2; double q1_2, q2_2;
// Open the saved project file // Open the saved project file
EN_Project ph = NULL; EN_Project ph = NULL;
error = EN_createproject(&ph); error = EN_createproject(&ph);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
error = EN_open(ph, "netbuilder_test2.inp", DATA_PATH_RPT, DATA_PATH_OUT); error = EN_open(ph, "netbuilder_test2.inp", DATA_PATH_RPT, DATA_PATH_OUT);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
@@ -400,10 +400,10 @@ BOOST_AUTO_TEST_CASE(test_reopen_net2, *boost::unit_test::depends_on("test_net_b
//cout << "\n Link L2 Flow: " << q2_1 << " " << q2_2; //cout << "\n Link L2 Flow: " << q2_1 << " " << q2_2;
// Compare old & new results // Compare old & new results
// BOOST_CHECK(abs(p1_1 - p1_2) < 1.e-5); // BOOST_CHECK(abs(p1_1 - p1_2) < 1.e-5);
// BOOST_CHECK(abs(q1_1 - q1_2) < 1.e-5); // BOOST_CHECK(abs(q1_1 - q1_2) < 1.e-5);
// BOOST_CHECK(abs(p2_1 - p2_2) < 1.e-5); // BOOST_CHECK(abs(p2_1 - p2_2) < 1.e-5);
// BOOST_CHECK(abs(q2_1 - q2_2) < 1.e-5); // BOOST_CHECK(abs(q2_1 - q2_2) < 1.e-5);
// Close project // Close project
EN_close(ph); EN_close(ph);

View File

@@ -18,6 +18,35 @@
BOOST_AUTO_TEST_SUITE (test_node) BOOST_AUTO_TEST_SUITE (test_node)
BOOST_FIXTURE_TEST_CASE(test_adddelete_node, FixtureInitClose)
{
int index;
error = EN_addnode(ph, (char *)"N2", EN_JUNCTION);
BOOST_REQUIRE(error == 0);
error = EN_addnode(ph, (char *)"N3", EN_RESERVOIR);
BOOST_REQUIRE(error == 0);
error = EN_getnodeindex(ph, (char *)"N2", &index);
BOOST_REQUIRE(error == 0);
error = EN_deletenode(ph, index, EN_UNCONDITIONAL);
BOOST_REQUIRE(error == 0);
error = EN_addnode(ph, (char *)"N4", EN_TANK);
BOOST_REQUIRE(error == 0);
error = EN_getnodeindex(ph, (char *)"N4", &index);
BOOST_REQUIRE(error == 0);
error = EN_deletenode(ph, index, EN_UNCONDITIONAL);
BOOST_REQUIRE(error == 0);
error = EN_getnodeindex(ph, (char *)"N3", &index);
BOOST_REQUIRE(error == 0);
error = EN_deletenode(ph, index, EN_UNCONDITIONAL);
BOOST_REQUIRE(error == 0);
}
BOOST_FIXTURE_TEST_CASE(test_junc_props, FixtureOpenClose) BOOST_FIXTURE_TEST_CASE(test_junc_props, FixtureOpenClose)
{ {
int index; int index;
@@ -297,4 +326,5 @@ BOOST_AUTO_TEST_CASE(test_reopen_comment, * boost::unit_test::depends_on("node_c
EN_deleteproject(&ph); EN_deleteproject(&ph);
} }
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()