class Test1(unittest.TestCase): def Error(self, e): if (e): s = "Epanet Error: %d : %s" % (e, self.es.ENgeterror(e, 500)[1]) raise Exception(s) def setUp(self): print("SETUP!") self.file = os.path.join(os.path.dirname(simple.__file__), 'Net3.inp') self.es = EPANetSimulation(self.file) def tearDown(self): # Bug! the ENclose cause core dumps on posix -- No, on windows as well! if (False): # os.name!="posix"): self.Error(self.es.ENclose()) print("TEAR DOWN!") def test_alter_with_ENset_and_check_with_a_file(self): self.Error(self.es.ENsaveinpfile("1.inp")) self.Error(self.es.ENsetlinkvalue(81, 0, 9999)) self.Error(self.es.ENsaveinpfile("2.inp")) self.assertEqual(tt.compareFiles("1.inp", "2.inp"), '16>1e+04; ')
for j in lista_IX_CI_PIPES: es.ENsetlinkvalue(j, scabrezze, i) #import tempfile #f=os.path.join(tempfile.gettempdir(),'new.inp')#NON FUNZIONA #es.ENsaveinpfile(f) #es2=EPANetSimulation(f)5 print(i) es.run() p12 = nod[nodo_12_index].results[presiones][:len(obj)] rms = sqrt(mean_squared_error(obj, p12)) RMS.append(rms) if rms < 1 and (abs(min(obj) - min(p12))) < 1: print('Rugosidad aceptable=', i, ' rms=', rms) import tempfile f = os.path.join(tempfile.gettempdir(), 'new.inp') es.ENsaveinpfile(f) es2 = EPANetSimulation(f) plt.plot(obj, label="observed") plt.plot(p12, label="simulated") plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc='lower left', ncol=2, mode="expand", borderaxespad=0.) plt.ylabel('Pressure(m)') plt.show() break break else: print("no pipes to calibrate") #verifica THV if min(RMS) > 1 or (abs(min(obj) - min(p12))) < 1:
class Test1(unittest.TestCase): def Error(self, e): if (e): s = "Epanet Error: %d : %s" % (e, self.es.ENgeterror(e, 500)[1]) raise Exception(s) def setUp(self): print("SETUP!") file = os.path.join(os.path.dirname(simple.__file__), 'Net3.inp') self.es = EPANetSimulation(file) def tearDown(self): self.es.clean() print("TEAR DOWN!") @skip def test_runs_a_simulation_with_pipe_closed_and_get_results_pdd_give_reasonable_results( self): # now do the same with pipe '247' closed. ind = self.es.network.links['247'].index dia = Link.value_type["EN_DIAMETER"] # get the code for EN_STATUS # use old interface to set diameter to zero self.Error(self.es.ENsetlinkvalue(ind, dia, 0.1)) # now link diameter is small file = "1.inp" ret = self.es.ENsaveinpfile(file) self.assertEqual(ret, 0) # now create a new object with the new file. es = EPANetSimulation(file, pdd=True) es.run() p = Node.value_type['EN_PRESSURE'] d = Node.value_type['EN_DEMAND'] self.assertAlmostEquals(es.network.nodes['215'].results[p][5], -1.3, places=1) self.assertAlmostEqual(es.network.nodes['215'].results[d][5], 0.0, places=1) def test_runs_a_normal_pressure_simulation_and_get_results_pdd_does_not_change_results( self): # self.fail("Not yet calling epanet emitter properly") def mod1(): p = Node.value_type['EN_PRESSURE'] self.assertAlmostEqual(self.es.network.nodes['103'].results[p][5], 59.301, places=3) self.assertAlmostEqual(self.es.network.nodes['125'].results[p][5], 66.051, places=3) self.assertEqual(self.es.network.time[5], 15213) self.assertEqual(self.es.network.tsteps[5], 2787) self.assertEqual(self.es.network.tsteps[6], 3600) self.assertEqual(len(self.es.network.time), len(self.es.network.nodes[1].results[p])) d = Node.value_type['EN_DEMAND'] h = Node.value_type['EN_HEAD'] self.assertAlmostEqual(self.es.network.nodes['103'].results[d][5], 101.232, places=3) self.assertAlmostEqual(self.es.network.nodes['103'].results[h][5], 179.858, places=3) def mod2(): p = Link.value_type['EN_DIAMETER'] self.assertAlmostEquals( self.es.network.links[1].results[p][0], 99.0, places=1) # index is not important. Diameter is fixed. ! self.assertAlmostEquals(self.es.network.links['105'].results[p][0], 12.0, places=1) v = Link.value_type['EN_VELOCITY'] self.assertAlmostEquals(self.es.network.links[2].results[v][22], 0.025, places=2) self.assertAlmostEquals(self.es.network.links['111'].results[v][1], 3.23, places=2) def mod3(): p = Node.value_type['EN_PRESSURE'] self.assertAlmostEqual(self.es.network.nodes['215'].results[p][5], 58.7571, places=3) self.assertAlmostEqual(self.es.network.nodes['225'].results[p][5], 58.320, places=3) d = Node.value_type['EN_DEMAND'] self.assertAlmostEqual(self.es.network.nodes['215'].results[d][5], 70.064, places=3) self.assertAlmostEqual(self.es.network.nodes['225'].results[d][5], 17.328, places=3) def mod4(): p = Node.value_type['EN_PRESSURE'] self.assertAlmostEqual(self.es.network.nodes['215'].results[p][5], 58.7571, places=3) self.assertAlmostEqual(self.es.network.nodes['225'].results[p][5], 58.320, places=3) d = Node.value_type['EN_DEMAND'] self.assertAlmostEqual(self.es.network.nodes['215'].results[d][5], 70.064, places=3) self.assertAlmostEqual(self.es.network.nodes['225'].results[d][5], 17.328, places=3) self.es.run() mod1() mod2() self.es.runq() q = Node.value_type['EN_QUALITY'] self.assertAlmostEqual(self.es.network.nodes['117'].results[q][4], 85.317, places=3) self.assertAlmostEqual(self.es.network.nodes['117'].results[q][5], 100.0) e = Link.value_type['EN_ENERGY'] self.assertAlmostEquals(self.es.network.links['111'].results[e][23], .00685, places=2) mod1() mod2() mod3() file = "1.inp" self.Error(self.es.ENsaveinpfile(file)) # now create a new object with the new file. es = EPANetSimulation(file, pdd=True) es.run() mod1() mod2() mod3()
class pdd_service(object): def __init__(self, epanet_network, diafact=10.0, coords=False, adfcalc=True): self.epanet_network = epanet_network self.diafact = diafact self.adfcalc = adfcalc self.open_network(epanet_network) if (coords): self.read_coordinates(epanet_network) self.orig_networkfile = epanet_network self._get_units() def _get_units(self): import re pattern = re.compile("^\s*Units\s*([A-Z]{3})\s*$") self.units = None with open(self.orig_networkfile, "r") as f: for line in f: p = pattern.search(line) if p: self.units = p.group(1) break if not self.units: raise Exception( "Wrong file format. Can Not find 'Units XXX' entry") def read_coordinates(self, epanet_network): """Reads the epanet input file and extracts the coorinates of: 1. nodes 2. link vertices if any """ with open(epanet_network, 'r') as f: l = [x.strip() for x in f.readlines()] data = [x for x in l if (x and x != '' and x[0] != ';')] # drop all empty lines st = data.index("[COORDINATES]") lines = data[st + 1:-1] for line in lines: if line[0] + line[-1] == '[]': break vals = str.split(line) self.nodes[vals[0]].x = float(vals[1]) self.nodes[vals[0]].y = float(vals[2]) # now check and raise error if a certain node does not have coordinates try: for i, node in self.nodes.items(): node.x node.y except AttributeError as e: logger.warn("Exception raised(see below): %e" % e) logger.warn( "There is an error in your network file, some nodes do not have coordinates. Fix them and retry please." ) logger.warn("Offending item: %s: Node: %s (%d)" % (epanet_network, node.id, i)) raise AttributeError( "There is an error in your network file, some nodes do not have coordinates. Fix them and retry please." ) for i, link in self.links.items(): if (link.start.x == link.end.x): link.start.x = link.start.x link.end.x = link.end.x # now extract vertices (if any) st = data.index("[VERTICES]") lines = data[st + 1:-1] # first add empty list called vertices for i, link in self.links.items(): link.vertices = [] # now find any vertices and append them for line in lines: if line[0] + line[-1] == '[]': break vals = str.split(line) self.links[vals[0]].vertices.append( (float(vals[1]), float(vals[2]))) def open_network(self, epanet_network): logger.info("Opening network %s" % epanet_network) self.es = EPANetSimulation(epanet_network, pdd=True) if (self.adfcalc): logger.info("Doing ADF calculations") self.es.adfcalc(diafact=self.diafact) else: logger.info("Skipping ADF") self._set_static_values() # set nodes, links for easy access! self.nodes = Nodes() self.links = Links() logger.info("Mapping nodes and links to new objects") for key, value in self.es.network.nodes.items(): n = _Node() n.id = value.id self.nodes[key] = n for key, value in self.es.network.links.items(): l = _Link() l.id = value.id l.length = value.length l.diameter = value.diameter try: l.ADF = value.ADF except: pass l.start = self.nodes[value.start.id] l.end = self.nodes[value.end.id] self.links[key] = l # self.nodes = self.es.network.nodes # self.links = self.es.network.links def _set_static_values(self): """ Adds attibutes of length, diameter for easy access.""" for i, link in self.es.network.links.items(): d = Link.value_type['EN_DIAMETER'] l = Link.value_type['EN_LENGTH'] link.diameter = link.results[d][0] link.length = link.results[l][0] def get_total_demand(self): self.es.run() total = 0.0 st = self.es.network.tsteps j = Node.node_types['JUNCTION'] for (i, node) in [(i, x) for i, x in self.es.network.nodes.items() if x.node_type == j]: d = Node.value_type["EN_DEMAND"] dem = [x * y for x, y in zip(node.results[d], st)] total = total + sum(dem) return total def _c_and_r(self, vals): try: r = vals[0] results = vals[1] except: r = vals results = None if (r != 0): # pragma: no cover raise Exception("epanettools error!") return results def get_pipe_closed_demand(self, pipeindex, dia_factor): import os prefix_ = "epanet_" + self._c_and_r(self.es.ENgetlinkid(pipeindex)) fd, f = tempfile.mkstemp(suffix=".inp", prefix=prefix_, dir=tempfile.gettempdir(), text=True) os.close(fd) d = Link.value_type['EN_DIAMETER'] ret, diam = self.es.ENgetlinkvalue(pipeindex, d) dsmall = diam / float(dia_factor) self._c_and_r(self.es.ENsetlinkvalue(pipeindex, d, dsmall)) self.es.ENsaveinpfile(f) self._c_and_r(self.es.ENsetlinkvalue(pipeindex, d, diam)) # reset diameter self.es = EPANetSimulation(f, pdd=True) demand = self.get_total_demand() self.es = EPANetSimulation( self.orig_networkfile) # reset original network return demand
''' d=Link.value_type['EN_DIAMETER'] e=Node.value_type['EN_ELEVATION'] es.network.links[81].results[d] # new interface es.ENgetnodevalue(55,e)[1] # low level interface es.network.nodes[55].results[e] #new interface r=es.ENsetlinkvalue(81,d,99) # now let's change values - link r # zero means no error! r=es.ENsetnodevalue(55,e,18.25) # change elevation of node r #zero means no error # Note: the original network is not changed! Only the low level values changed. This is a limitation of current implementation es.network.links[81].results[d], es.ENgetlinkvalue(81,d)[1], es.network.nodes[55].results[e], es.ENgetnodevalue(55,e)[1] # to permanantly change values, the changed network has to be written to a new file import tempfile, os f=os.path.join(tempfile.gettempdir(),"temp.inp") es.ENsaveinpfile(f) # save the changed file e2=EPANetSimulation(f) e2.network.links[81].results[d], e2.ENgetlinkvalue(81,d)[1], e2.network.nodes[55].results[e], e2.ENgetnodevalue(55,e)[1] # now in both high level and low level interfaces, we have the right value. ''' changing the pattern of the network ''' patId = "NewPattern"; ret=es.ENaddpattern(patId) print(ret) patFactors=[0.8, 1.1, 1.4, 1.1, 0.8, 0.7, 0.9, 0.0, 0.8, 0.8, 0.0, 0.0] ret,patIndex=es.ENgetpatternindex(patId) print(patIndex) es.ENsetpattern(patIndex, patFactors)
class Test1(unittest.TestCase): def setUp(self): print("SETUP!") file = os.path.join(os.path.dirname(simple.__file__), 'Net3.inp') self.es = EPANetSimulation(file) def tearDown(self): self.es.clean() print("TEAR DOWN!") @skip def test_false(self): assert False def test_epnetsimulation_has_a_network_which_has_nodes_and_links(self): self.assertIsInstance(self.es.network, Network) self.assertIsInstance(self.es.network.links, Links) self.assertIsInstance(self.es.network.nodes, Nodes) self.assertIsInstance(self.es.network.nodes[1], Node) self.assertIsInstance(self.es.network.links[1], Link) def test_network_has_patterns(self): self.assertIsInstance(self.es.network.patterns, Patterns) self.assertIsInstance(self.es.network.patterns[1], Pattern) self.assertEqual(len(self.es.network.patterns), 5) self.assertEqual(self.es.network.patterns['4'][7], 1777) # can call with index or... self.assertEqual(self.es.network.patterns[4][7], 1777) # id. And for specific value, call the item. def test_network_has_controls(self): self.assertIsInstance(self.es.network.controls, Controls) self.assertIsInstance(self.es.network.controls[1], Control) self.assertEqual(len(self.es.network.controls), 6) c = [self.es.network.controls[x] for x in range(1, 5)] self.assertEqual(c[0].link.id, '10') self.assertEqual(c[0].node, None) self.assertEqual(c[0].level, 3600.) self.assertAlmostEqual(c[0].setting, Link.OPENED) self.assertEqual(c[0].ctype, Control.control_types['TIMER_CONTROL']) self.assertAlmostEqual(c[1].setting, Link.CLOSED) self.assertAlmostEqual( c[2].setting, Link.OPENED) # Link 335 OPEN IF Node 1 BELOW 17.1 self.assertEqual(c[2].link.id, '335') self.assertEqual(c[2].node.id, '1') self.assertAlmostEqual(c[2].level, 17.1, places=1) self.assertEqual(c[2].ctype, Control.control_types['LOW_LEVEL_CONTROL']) self.assertAlmostEqual( c[3].setting, Link.CLOSED) # Link 335 OPEN IF Node 1 BELOW 17.1 self.assertEqual(c[3].link.id, '335') self.assertEqual(c[3].node.id, '1') self.assertAlmostEqual(c[3].level, 19.1, places=1) self.assertEqual(c[3].ctype, Control.control_types['HIGH_LEVEL_CONTROL']) def test_water_quality_analysis_type_is_set(self): self.assertEqual(self.es.network.WaterQualityAnalysisType, Network.WaterQualityAnalysisTypes["EN_TRACE"]) self.assertEqual(self.es.network.WaterQualityTraceNode.id, 'Lake') def test_proper_options_are_set(self): n = self.es.network self.assertAlmostEqual(n.en_accuracy, 0.001, places=3) self.assertAlmostEqual(n.en_demandmult, 1.0, places=3) self.assertAlmostEqual(n.en_emitexpon, 0.5, places=2) self.assertAlmostEqual(n.en_tolerance, .01, places=5) self.assertAlmostEqual(n.en_trials, 40.0, places=3) def test_can_import_EPANetSimulation(self): try: from epanettools.epanettools import EPANetSimulation except (Exception): assert False def test_non_existing_file_raise_error(self): v1 = sys.version_info[0] v2 = sys.version_info[1] if (v1 == 3): self.assertRaises(FileNotFoundError, EPANetSimulation, "Silly file") return if (v1 == 2): if (v2 >= 7): self.assertRaises(IOError, EPANetSimulation, "Silly file") else: self.fail def test_in_input_type_nodes_node_data_has_only_one_value(self): def mod1(): for j, node in self.es.network.nodes.items(): for t, i in Node.value_type.items(): if (not i in Node.settable_values): continue self.assertEqual(len(node.results[i]), 1) mod1() self.es.run() mod1() self.es.runq() mod1() def test_in_output_type_nodes_node_data_has_multiple_values(self): def mod1(before_run=True): for j, node in self.es.network.nodes.items(): for t, i in Node.value_type.items(): if (i in Node.input_values): continue if (before_run): self.assertEqual(len(node.results[i]), 0) else: self.assertEqual(len(node.results[i]), len(self.es.network.time)) mod1() self.es.run() mod1(False) self.es.runq() mod1(False) def test_for_input_type_links_link_data_has_only_one_value(self): def mod1(): for j, link in self.es.network.links.items(): for t, i in Link.value_type.items(): if (not i in Link.settable_values): continue self.assertEqual(len(link.results[i]), 1) mod1() self.es.run() mod1() self.es.runq() mod1() def test_for_output_type_links_link_data_has_multiple_values(self): def mod1(before_run=True): for j, link in self.es.network.links.items(): for t, i in Link.value_type.items(): if (i in Link.settable_values): continue if (before_run): self.assertEqual(len(link.results[i]), 0) else: self.assertEqual(len(link.results[i]), len(self.es.network.time)) mod1() self.es.run() mod1(False) self.es.runq() mod1(False) def test_properly_open_a_network_file(self): import filecmp file = os.path.join(os.path.dirname(simple.__file__), 'Net3.inp') es = EPANetSimulation(file) self.assertNotEqual(file, self.es.inputfile) self.assertTrue(os.path.isfile(self.es.inputfile)) self.assertFalse(os.path.isdir(self.es.inputfile)) # file names are unique self.assertEqual( len(set([EPANetSimulation(file).inputfile for i in range(100)])), 100) # file content is identical to the original file self.assertTrue(filecmp.cmp(self.es.inputfile, file)) # but names are not the same self.assertFalse(self.es.inputfile == file) def test_get_correct_network_information(self): n = self.es.network.nodes self.assertEqual(n[1].id, '10') self.assertEqual(n[3].id, '20') self.assertEqual(n[25].id, '129') self.assertEqual(n[94].id, 'Lake') self.assertEqual(n[94].index, 94) m = self.es.network.links self.assertEqual(m[1].id, '20') self.assertEqual(m[3].id, '50') self.assertEqual(m[119].id, '335') self.assertEqual([m[1].start.id, m[1].end.id], ['3', '20']) self.assertEqual([m[118].start.id, m[118].end.id], ['Lake', '10']) # types of nodes self.assertEqual(n[94].node_type, Node.node_types['RESERVOIR']) self.assertEqual(n[1].node_type, Node.node_types['JUNCTION']) self.assertEqual(n['2'].node_type, Node.node_types['TANK']) # types of links self.assertEqual(m['335'].link_type, Link.link_types['PUMP']) self.assertEqual(m['101'].link_type, Link.link_types['PIPE']) self.assertEqual(m[1].link_type, Link.link_types['PIPE']) self.assertEqual(m[119].index, 119) # link or node can be searched with ID too. self.assertEqual(n['Lake'].id, 'Lake') self.assertEqual(n['Lake'].index, 94) self.assertEqual(m['335'].id, '335') self.assertEqual(m['335'].index, 119) # get the links connected to a node. self.assertEqual(sorted([i.id for i in n['169'].links]), ['183', '185', '187', '211']) def xtest_sync_does_not_make_mistakes_in_saving_back_same_values(self): self.es.ENsaveinpfile("a.inp") self.es.sync(i_know_what_i_am_doing=True) self.es.ENsaveinpfile("b.inp") self.assertEqual(tt.compareFiles("a.inp", "b.inp"), '') def test_results_get_correct_values(self): n = self.es.network.nodes nan = float("NaN") # Tank has correct values r = { 0: [116.5], 1: [0.0], 2: [0.0], 3: [0.0], 4: [0.0], 5: [nan], 6: [nan], 7: [nan], 8: [23.5], 9: [], 10: [], 11: [], 12: [], 13: [], 14: [46142.140625], 15: [0.0], 16: [79128.8671875], 17: [50.0], 18: [12762.7197265625], 19: [0.0], 20: [6.5], 21: [40.29999923706055], 22: [1.0], 23: [0.0] } del r[5], r[7], r[6] a = copy.deepcopy(n['2'].results) del a[5], a[7], a[6] self.assertEqual(a, r) # Reservoirs have correct values r = { 0: [220.0], 1: [0.0], 2: [0.0], 3: [0.0], 4: [0.0], 5: [nan], 6: [nan], 7: [nan], 8: [0.0], 9: [], 10: [], 11: [], 12: [], 13: [], 14: [0.0], 15: [0.0], 16: [0.0], 17: [0.0], 18: [0.0], 19: [0.0], 20: [0.0], 21: [0.0], 22: [1.0], 23: [0.0] } a = copy.deepcopy(n['River'].results) del r[5], r[7], r[6] del a[5], a[7], a[6] self.assertEqual(a, r) m = self.es.network.links # Link has correct values r = { 0: [18.0], 1: [14200.0], 2: [110.0], 3: [0.0], 4: [1.0], 5: [110.0], 6: [0.0], 7: [0.0], 8: [], 9: [], 10: [], 11: [0.0], 12: [110.0], 13: [] } a = copy.deepcopy(m['101'].results) del r[5], r[7], r[6] del a[5], a[7], a[6] self.assertEqual(a, r) def test_can_access_low_level_EN_type_functions(self): self.assertEqual(self.es.ENgetnodeid(3), [0, '20']) def test_each_node_and_link_has_the_epanetsimulation_object_linked_to_it_as_variable_es( self): self.assertIsInstance(self.es.network.links[1].network.es, EPANetSimulation) self.assertIsInstance(self.es.network.nodes[1].network.es, EPANetSimulation) def test_runs_a_simulation_and_get_results(self): def mod1(): p = Node.value_type['EN_PRESSURE'] self.assertAlmostEqual(self.es.network.nodes['103'].results[p][5], 59.301, places=3) self.assertAlmostEqual(self.es.network.nodes['125'].results[p][5], 66.051, places=3) self.assertEqual(self.es.network.time[5], 15213) self.assertEqual(self.es.network.tsteps[5], 2787) self.assertEqual(self.es.network.tsteps[6], 3600) self.assertEqual(len(self.es.network.time), len(self.es.network.nodes[1].results[p])) d = Node.value_type['EN_DEMAND'] h = Node.value_type['EN_HEAD'] self.assertAlmostEqual(self.es.network.nodes['103'].results[d][5], 101.232, places=3) self.assertAlmostEqual(self.es.network.nodes['103'].results[h][5], 179.858, places=3) def mod2(): p = Link.value_type['EN_DIAMETER'] self.assertAlmostEquals( self.es.network.links[1].results[p][0], 99.0, places=1) # index is not important. Diameter is fixed. ! self.assertAlmostEquals(self.es.network.links['105'].results[p][0], 12.0, places=1) v = Link.value_type['EN_VELOCITY'] self.assertAlmostEquals(self.es.network.links[2].results[v][22], 0.025, places=2) self.assertAlmostEquals(self.es.network.links['111'].results[v][1], 3.23, places=2) self.es.run() mod1() mod2() self.es.runq() q = Node.value_type['EN_QUALITY'] self.assertAlmostEqual(self.es.network.nodes['117'].results[q][4], 85.317, places=3) self.assertAlmostEqual(self.es.network.nodes['117'].results[q][5], 100.0) e = Link.value_type['EN_ENERGY'] self.assertAlmostEquals(self.es.network.links['111'].results[e][23], .00685, places=2) mod1() mod2() def test_hydraulic_file_is_saved_only_when_save_is_true(self): self.es.run(save=False) self.assertFalse(os.path.exists(self.es.hydraulicfile)) self.es.run(save=True) self.assertTrue(os.path.exists(self.es.hydraulicfile)) @skip def test_clean_will_remove_results(self): self.assertTrue(os.path.exists(self.es.inputfile)) self.es.run() self.assertTrue(os.path.exists(self.es.rptfile)) self.assertTrue(os.path.exists(self.es.hydraulicfile)) self.es.runq() self.assertTrue(os.path.exists(self.es.rptfile)) self.assertTrue(os.path.exists(self.es.binfile)) self.assertTrue(os.path.exists(self.es.hydraulicfile)) self.es.clean() self.assertTrue(os.path.exists(self.es.inputfile)) self.assertFalse(os.path.exists(self.es.rptfile)) self.assertFalse(os.path.exists(self.es.binfile)) self.assertFalse(os.path.exists(self.es.hydraulicfile)) def test_settable_values_for_links_and_nodes(self): self.assertEqual(Link.settable_values, [0, 1, 2, 3, 4, 5, 6, 7, 11, 12]) self.assertEqual( Node.settable_values, [0, 1, 2, 3, 4, 5, 6, 7, 8, 15, 17, 18, 20, 21, 22, 23]) def xtest_synced_link_values_are_saved_when_synced(self): # change copule'a values d = Link.value_type['EN_DIAMETER'] self.es.network.links[1].results[d][0] self.es.network.links[1].results[d][0] = 152.0 self.es.network.links['105'].results[d][0] = 18.0 # first without 'syncing"" self.assertAlmostEquals(self.es._legacy_get('LINK', 1, d), 99.0, places=1) self.assertAlmostEquals(self.es._legacy_get( 'LINK', self.es.network.links['105'].index, d), 12.0, places=1) # save input file self.es.ENsaveinpfile("a.inp") # now after 'syncing' self.es.sync(i_know_what_i_am_doing=True) self.assertAlmostEquals(self.es._legacy_get('LINK', 1, d), 152.0, places=1) self.assertAlmostEquals(self.es._legacy_get( 'LINK', self.es.network.links['105'].index, d), 18.0, places=1) self.es.ENsaveinpfile("b.inp") # run self.es.run() # save input file again self.es.ENsaveinpfile("c.inp") self.assertEqual(tt.compareFiles("a.inp", "b.inp"), '99>152; 12>18; ') self.assertEqual(tt.compareFiles("a.inp", "c.inp"), '99>152; 12>18; ')