Skip to content

Commit a0ffa5e

Browse files
committed
Adding tests for link info retreival funcs
1 parent bcc479d commit a0ffa5e

2 files changed

Lines changed: 88 additions & 6 deletions

File tree

toolkit/epanet/toolkit/toolkit.i

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,24 @@ and return a (possibly) different pointer */
249249
}
250250

251251

252+
/* TYPEMAPS FOR MEMORY MANAGEMNET OF INT ARRAYS */
253+
%typemap(in, numinputs=0)int** int_out (long* temp), int* int_dim (int temp){
254+
$1 = &temp;
255+
}
256+
%typemap(argout) (int** int_out, int* int_dim) {
257+
if (*$1) {
258+
PyObject *o = PyList_New(*$2);
259+
int i;
260+
long* temp = (long*)*$1;
261+
for(i=0; i<*$2; i++) {
262+
PyList_SetItem(o, i, PyInt_FromLong(temp[i]));
263+
}
264+
$result = SWIG_Python_AppendOutput($result, o);
265+
free(*$1);
266+
}
267+
}
268+
269+
252270
/* TYPEMAP FOR ENUMERATED TYPES */
253271
%typemap(in) EnumeratedType (int val, int ecode = 0) {
254272
if (PyObject_HasAttrString($input,"value")) {
@@ -262,7 +280,7 @@ and return a (possibly) different pointer */
262280

263281
$1 = ($1_type)(val);
264282
}
265-
%apply EnumeratedType {EN_SaveOption, EN_NodeProperty};
283+
%apply EnumeratedType {EN_SaveOption, EN_NodeProperty, EN_LinkProperty};
266284

267285

268286
/* RENAME FUNCTIONS PYTHON STYLE */
@@ -302,11 +320,13 @@ int DLLEXPORT EN_getnodetype(EN_ProjectHandle ph, int index, int *int_out);
302320
int DLLEXPORT EN_getnodevalue(EN_ProjectHandle ph, int index, EN_NodeProperty code, float *float_out);
303321

304322
// RETREIVING INFORMATION ABOUT NETWORK LINKS
305-
int DLLEXPORT EN_getlinkindex(EN_ProjectHandle ph, char *id, int *index);
306-
int DLLEXPORT EN_getlinkid(EN_ProjectHandle ph, int index, char *id);
307-
int DLLEXPORT EN_getlinktype(EN_ProjectHandle ph, int index, EN_LinkType *code);
308-
int DLLEXPORT EN_getlinknodes(EN_ProjectHandle ph, int index, int *node1, int *node2);
309-
int DLLEXPORT EN_getlinkvalue(EN_ProjectHandle ph, int index, EN_LinkProperty code, EN_API_FLOAT_TYPE *value);
323+
int DLLEXPORT EN_getlinkindex(EN_ProjectHandle ph, char *id, int *int_out);
324+
//int DLLEXPORT EN_getlinkid(EN_ProjectHandle ph, int index, char *id);
325+
int DLLEXPORT EN_getlinkname(EN_ProjectHandle ph, int index, char **string_out, int *slen);
326+
int DLLEXPORT EN_getlinktype(EN_ProjectHandle ph, int index, int *int_out);
327+
//int DLLEXPORT EN_getlinknodes(EN_ProjectHandle ph, int index, int *node1, int *node2);
328+
int DLLEXPORT EN_getlinknodearray(EN_ProjectHandle ph, int index, int **int_out, int *int_dim);
329+
int DLLEXPORT EN_getlinkvalue(EN_ProjectHandle ph, int index, EN_LinkProperty code, float *float_out);
310330

311331
// RETREIVING INFORMATION ABOUT TIME PATTERNS
312332
int DLLEXPORT EN_getpatternid(EN_ProjectHandle ph, int index, char *id);
@@ -384,6 +404,18 @@ class NodeType(enum.Enum):
384404
TANK = EN_TANK
385405

386406

407+
class LinkType(enum.Enum):
408+
CVPIPE = EN_CVPIPE
409+
PIPE = EN_PIPE
410+
PUMP = EN_PUMP
411+
PRV = EN_PRV
412+
PSV = EN_PSV
413+
PBV = EN_PBV
414+
FCV = EN_FCV
415+
TCV = EN_TCV
416+
GPV = EN_GPV
417+
418+
387419
class NodeProperty(enum.Enum):
388420
ELEVATION = EN_ELEVATION
389421
BASEDEMAND = EN_BASEDEMAND
@@ -413,6 +445,29 @@ class NodeProperty(enum.Enum):
413445
MAXVOLUME = EN_MAXVOLUME
414446

415447

448+
class LinkProperty(enum.Enum):
449+
DIAMETER = EN_DIAMETER
450+
LENGTH = EN_LENGTH
451+
ROUGHNESS = EN_ROUGHNESS
452+
MINORLOSS = EN_MINORLOSS
453+
INITIALSTATUS = EN_INITSTATUS
454+
INITIALSETTINT = EN_INITSETTING
455+
KBULK = EN_KBULK
456+
KWALL = EN_KWALL
457+
FLOW = EN_FLOW
458+
VELOCITY = EN_VELOCITY
459+
HEADLOSS = EN_HEADLOSS
460+
STATUS = EN_STATUS
461+
SETTING = EN_SETTING
462+
ENERGY = EN_ENERGY
463+
LINKQUAL = EN_LINKQUAL
464+
LINKPATTERN = EN_LINKPATTERN
465+
EFFICIENCY = EN_EFFICIENCY
466+
HEADCURVE = EN_HEADCURVE
467+
EFFICIENCYCURVE = EN_EFFICIENCYCURVE
468+
PRICEPATTERN = EN_PRICEPATTERN
469+
470+
416471
class SaveOptions(enum.Enum):
417472
NOSAVE = EN_NOSAVE
418473
SAVE = EN_SAVE

toolkit/tests/test_toolkit.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,33 @@ def test_getnodevalue(handle):
6969
value = entk.getnodevalue(handle, 4, entk.NodeProperty.ELEVATION)
7070
assert value == 695.
7171

72+
73+
def test_getlinkindex(handle):
74+
index = entk.getlinkindex(handle, "31")
75+
assert index == 6
76+
77+
78+
def test_getlinkname(handle):
79+
id = entk.getlinkname(handle, 6)
80+
assert id == "31"
81+
82+
83+
def test_getlinktype(handle):
84+
type = entk.getlinktype(handle, 6)
85+
assert type == entk.LinkType.PIPE.value
86+
87+
88+
# def test_getlinknodearray(handle):
89+
# nodes = entk.getlinknodearray(handle, 6)
90+
# assert len(nodes) == 2
91+
# assert node[0] == 10
92+
# assert node[1] == 11
93+
94+
95+
def test_getlinkvalue(handle):
96+
value = entk.getlinkvalue(handle, 6, entk.LinkProperty.DIAMETER)
97+
assert value == 6.0
98+
7299

73100
def test_hyd_step(handle):
74101
entk.openh(handle)

0 commit comments

Comments
 (0)