Skip to content

Commit 4230fad

Browse files
committed
Adding tests
1 parent bdf0995 commit 4230fad

1 file changed

Lines changed: 140 additions & 102 deletions

File tree

toolkit/tests/test_toolkit.py

Lines changed: 140 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22

33
#
44
# test_toolkit.py
5-
#
5+
#
66
# Created: October 19, 2018
77
# Author: Michael E. Tryby
88
# US EPA - ORD/NRMRL
9-
#
9+
#
1010

1111
import pytest
12+
import os.path as osp
1213

1314
import epanet.toolkit.toolkit as en
1415

@@ -19,172 +20,209 @@ def test_createdelete():
1920

2021
_handle = en.proj_create()
2122
assert(_handle != None)
22-
23+
2324
_handle = en.proj_delete(_handle)
2425
assert(_handle == None)
25-
26+
2627

2728
def test_run():
2829
_handle = en.proj_create()
29-
30+
3031
en.proj_run(_handle, INPUT_FILE_NET_1, REPORT_FILE_TEST, OUTPUT_FILE_TEST)
31-
32-
en.proj_delete(_handle)
33-
32+
assert osp.isfile(REPORT_FILE_TEST) == True
33+
assert osp.isfile(OUTPUT_FILE_TEST) == True
34+
35+
en.proj_delete(_handle)
36+
3437

3538
def test_openclose():
3639
_handle = en.proj_create()
3740
en.proj_open(_handle, INPUT_FILE_NET_1, REPORT_FILE_TEST, OUTPUT_FILE_TEST)
38-
41+
3942
en.proj_close(_handle)
4043
en.proj_delete(_handle)
4144

42-
45+
46+
def test_savereopen():
47+
input_file_reopen = "test_reopen.inp"
48+
49+
_handle = en.proj_create()
50+
51+
en.proj_open(_handle, INPUT_FILE_NET_1, REPORT_FILE_TEST, OUTPUT_FILE_TEST)
52+
en.proj_savefile(_handle, input_file_reopen)
53+
en.proj_close(_handle)
54+
55+
_handle = en.proj_delete(_handle)
56+
57+
_handle = en.proj_create()
58+
59+
en.proj_open(_handle, input_file_reopen, REPORT_FILE_TEST, OUTPUT_FILE_TEST)
60+
en.proj_close(_handle)
61+
62+
_handle = en.proj_delete(_handle)
63+
64+
4365
@pytest.fixture()
44-
def handle(request):
66+
def handle(request):
4567
_handle = en.proj_create()
4668
en.proj_open(_handle, INPUT_FILE_NET_1, REPORT_FILE_TEST, OUTPUT_FILE_TEST)
47-
69+
4870
def close():
4971
en.proj_close(_handle)
5072
en.proj_delete(_handle)
51-
52-
request.addfinalizer(close)
53-
return _handle
54-
5573

56-
def test_hyd_step(handle):
74+
request.addfinalizer(close)
75+
return _handle
76+
77+
78+
def test_hyd_step(handle):
5779
en.hydr_open(handle)
58-
80+
5981
en.hydr_init(handle, en.SaveOption.NOSAVE)
60-
82+
6183
while True:
6284
time = en.hydr_run(handle)
63-
85+
6486
step = en.hydr_next(handle)
65-
87+
6688
if time == 0.:
6789
break
68-
90+
6991
en.hydr_close(handle)
7092

7193

7294
def test_qual_step(handle):
7395
en.hydr_solve(handle)
74-
96+
7597
en.qual_open(handle)
76-
98+
7799
en.qual_init(handle, en.SaveOption.NOSAVE)
78-
100+
79101
while True:
80102
time = en.qual_run(handle)
81-
103+
82104
step = en.qual_next(handle)
83-
105+
84106
if time == 0.:
85107
break
86-
108+
87109
en.qual_close(handle)
88-
110+
89111

90112
def test_report(handle):
91-
113+
92114
nlinks = en.rprt_getcount(handle, en.CountType.LINKS)
115+
assert nlinks == 13
116+
93117
en.hydr_solve(handle)
94118
en.qual_solve(handle)
95-
96-
en.rprt_set(handle, "NODES ALL")
119+
120+
en.rprt_set(handle, 'NODES ALL')
97121
en.rprt_writeresults(handle)
98-
122+
assert osp.isfile(REPORT_FILE_TEST) == True
123+
124+
125+
def test_analysis(handle):
126+
test_value = [];
127+
128+
for code in en.Option:
129+
test_value.append(en.anlys_getoption(handle, code))
130+
131+
funits = en.anlys_getflowunits(handle)
132+
assert en.FlowUnits(funits) == en.FlowUnits.GPM
133+
134+
test_value.clear()
135+
ref_value = [86400, 3600, 300, 7200, 0, 3600, 0, 360, 0, 0, 0, 0, 0, 0, 3600, 0]
136+
for code in en.TimeProperty:
137+
test_value.append(en.anlys_gettimeparam(handle, code))
138+
assert test_value == ref_value
139+
140+
qualinfo = en.anlys_getqualinfo(handle)
141+
assert qualinfo == [1, 'Chlorine' ,'mg/L', 0]
142+
143+
99144

100145
def test_node(handle):
101-
index = en.node_getindex(handle, "10")
146+
index = en.node_getindex(handle, '10')
147+
assert index == 1
148+
102149
id = en.node_getid(handle, index)
150+
assert id == '10'
151+
103152
type = en.node_gettype(handle, index)
153+
assert en.NodeType(type) == en.NodeType.JUNCTION
154+
104155
coord = en.node_getcoord(handle, index)
105-
156+
assert coord == [20.0, 70.0]
157+
106158

107159
def test_demand(handle):
108-
index = en.node_getindex(handle, "10")
160+
index = en.node_getindex(handle, '22')
109161
count = en.dmnd_getcount(handle, index)
110-
162+
assert count == 1
163+
164+
model = en.dmnd_getmodel(handle)
165+
assert model == [0, 0.0, 0.0, 0.5]
166+
167+
base = en.dmnd_getbase(handle, index, count)
168+
assert base == 200.0
169+
170+
ptrn = en.dmnd_getpattern(handle, index, count)
171+
assert ptrn == 1
172+
173+
en.dmnd_setname(handle, index, count, 'default')
174+
name = en.dmnd_getname(handle, index, count)
175+
assert name == 'default'
176+
111177

112178
def test_link(handle):
113-
index = en.link_getindex(handle, "10")
179+
index = en.link_getindex(handle, '10')
180+
assert index == 1
181+
114182
id = en.link_getid(handle, index)
183+
assert id == '10'
184+
115185
type = en.link_gettype(handle, index)
116-
186+
assert en.LinkType(type) == en.LinkType.PIPE
187+
188+
nodes = en.link_getnodes(handle, index)
189+
assert nodes == [1, 2]
190+
191+
test_value = []
192+
ref_value = [18.0, 10530.0, 100.0, 0.0, 1.0, 100.0, -0.5, -1.0, 0.0, 0.0, 0.0, 0.0]
193+
for code in range(en.LinkProperty.SETTING.value):
194+
test_value.append(en.link_getvalue(handle, index, en.LinkProperty(code)))
195+
assert test_value == pytest.approx(ref_value)
196+
117197

118198
def test_pump(handle):
119199
index = en.link_getindex(handle, "9")
120-
link_type = en.link_gettype(handle, index)
121-
pump_type = en.pump_gettype(handle, index)
122-
200+
assert index == 13
201+
202+
type = en.link_gettype(handle, index)
203+
assert en.LinkType(type) == en.LinkType.PUMP
204+
205+
type = en.pump_gettype(handle, index)
206+
assert en.PumpType(type) == en.PumpType.POWER_FUNC
207+
123208

124209
def test_pattern(handle):
125210
index = en.ptrn_getindex(handle, "1")
211+
assert index == 1
212+
126213
length = en.ptrn_getlength(handle, index)
127-
214+
assert length == 12
215+
216+
test_value = []
217+
ref_value = [1.0, 1.2, 1.4, 1.6, 1.4, 1.2, 1.0, 0.8, 0.6, 0.4, 0.6, 0.8]
218+
for i in range(1, length+1):
219+
test_value.append(en.ptrn_getvalue(handle, index, i))
220+
assert test_value == pytest.approx(ref_value)
221+
222+
value = en.ptrn_getavgvalue(handle, index)
223+
assert value == pytest.approx(1.0)
224+
128225

129226
def test_curve(handle):
130227
index = en.curv_getindex(handle, "1")
131228
length = en.curv_getlength(handle, index)
132-
133-
134-
#def test_anlys(handle):
135-
#
136-
# en.anlys_getqualinfo()
137-
138-
139-
140-
# def test_getnodeindex(handle):
141-
# index = entk.getnodeindex(handle, "13")
142-
# assert index == 4
143-
#
144-
#
145-
# def test_getnodename(handle):
146-
# id = entk.getnodename(handle, 4)
147-
# assert id == "13"
148-
#
149-
#
150-
# def test_getnodetype(handle):
151-
# type = entk.getnodetype(handle, 4)
152-
# assert type == entk.NodeType.JUNCTION.value
153-
#
154-
#
155-
# def test_getnodevalue(handle):
156-
# value = entk.getnodevalue(handle, 4, entk.NodeProperty.ELEVATION)
157-
# assert value == 695.
158-
#
159-
#
160-
# def test_getlinkindex(handle):
161-
# index = entk.getlinkindex(handle, "31")
162-
# assert index == 6
163-
#
164-
#
165-
# def test_getlinkname(handle):
166-
# id = entk.getlinkname(handle, 6)
167-
# assert id == "31"
168-
#
169-
#
170-
# def test_getlinktype(handle):
171-
# type = entk.getlinktype(handle, 6)
172-
# assert type == entk.LinkType.PIPE.value
173-
#
174-
#
175-
# # def test_getlinknodearray(handle):
176-
# # nodes = entk.getlinknodearray(handle, 6)
177-
# # assert len(nodes) == 2
178-
# # assert node[0] == 10
179-
# # assert node[1] == 11
180-
#
181-
#
182-
# def test_getlinkvalue(handle):
183-
# value = entk.getlinkvalue(handle, 6, entk.LinkProperty.DIAMETER)
184-
# assert value == 6.0
185-
#
186-
#
187-
188-
189-
190-

0 commit comments

Comments
 (0)