From 76b6254f3394ad4775e64d09c39a88edd7b9347c Mon Sep 17 00:00:00 2001 From: Michael Tryby Date: Thu, 18 Apr 2019 17:07:50 -0400 Subject: [PATCH] get/set demand name are passing --- src/epanet.c | 19 +++++++++------ tests/test_demand_data.cpp | 48 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 7 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 8af09ee..0ab9ffc 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2758,10 +2758,10 @@ int DLLEXPORT EN_getnumdemands(EN_Project p, int nodeIndex, int *numDemands) // Count the number of demand categories list_t *demand_list = p->network.Node[nodeIndex].D; - if (!demand_list) - *numDemands = 0; - else - *numDemands = size_list(demand_list); + if (demand_list) + *numDemands = size_list(demand_list); + else + *numDemands = 0; return 0; } @@ -2842,6 +2842,7 @@ int DLLEXPORT EN_getdemandname(EN_Project p, int nodeIndex, int demandIndex, { //Pdemand d; //int n = 1; + char *temp = NULL; strcpy(demandName, ""); @@ -2855,14 +2856,18 @@ int DLLEXPORT EN_getdemandname(EN_Project p, int nodeIndex, int demandIndex, if (!lnode) return 253; else - demandName = get_category_name(lnode); + temp = get_category_name(lnode); //for (d = p->network.Node[nodeIndex].D; // n < demandIndex && d->next != NULL; d = d->next) n++; //if (n != demandIndex) return 253; - //if (d->Name) strcpy(demandName, d->Name); - //else demandName[0] = '\0'; + if (temp) { + strcpy(demandName, temp); + //else demandName[0] = '\0'; + free(temp); + } + return 0; } diff --git a/tests/test_demand_data.cpp b/tests/test_demand_data.cpp index 7b61ac4..c9a7124 100644 --- a/tests/test_demand_data.cpp +++ b/tests/test_demand_data.cpp @@ -158,4 +158,52 @@ BOOST_AUTO_TEST_CASE(test_openclose) } +#define DATA_PATH_NET1 "./net1.inp" +#define DATA_PATH_TMP "./tmp.inp" +#define DATA_PATH_RPT "./test.rpt" +#define DATA_PATH_OUT "./test.out" + +struct FixtureOpenClose { + FixtureOpenClose() { + error = 0; + ph = NULL; + + EN_createproject(&ph); + error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, DATA_PATH_OUT); + } + + ~FixtureOpenClose() { + error = EN_close(ph); + EN_deleteproject(&ph); + } + + int error; + EN_Project ph; +}; + + +BOOST_FIXTURE_TEST_CASE(test_demandname_getset, FixtureOpenClose) +{ + int Nindex, ndem; + + error = EN_getnodeindex(ph, (char *)"12", &Nindex); + BOOST_REQUIRE(error == 0); + error = EN_getnumdemands(ph, Nindex, &ndem); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(ndem == 1); + + char demname[31]; + + error = EN_getdemandname(ph, Nindex, ndem, demname); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(check_string(demname, "\0")); + + error = EN_setdemandname(ph, Nindex, ndem, (char *)"Demand category name"); + BOOST_REQUIRE(error == 0); + + error = EN_getdemandname(ph, Nindex, ndem, demname); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(check_string(demname, "Demand category name")); +} + BOOST_AUTO_TEST_SUITE_END()