Refine change set

This commit is contained in:
wqy
2022-09-17 23:43:03 +08:00
parent 36a8fa2f79
commit fc0283b417
5 changed files with 246 additions and 209 deletions

View File

@@ -1,14 +1,12 @@
class ChangeSet:
def __init__(self) -> None:
self.added : list[dict[str, str]] = []
self.deleted : list[dict[str, str]] = []
self.updated : list[dict[str, str]] = []
self.operations : list[dict[str, str]] = []
def add(self, type: str, id: str) -> None:
self.added.append({ 'type': type, 'id': id })
self.operations.append({ 'operation': 'add', 'type': type, 'id': id })
def delete(self, type: str, id: str) -> None:
self.deleted.append({ 'type': type, 'id': id })
self.operations.append({ 'operation': 'delete', 'type': type, 'id': id })
def update(self, type: str, id: str, property_name: str, property_type: str, property_value: str) -> None:
self.updated.append({ 'type': type, 'id': id, 'property': property_name, 'property_type': property_type, 'property_value': property_value })
def update(self, type: str, id: str, property: str) -> None:
self.operations.append({ 'operation': 'update', 'type': type, 'id': id, 'property': property })

View File

@@ -20,5 +20,5 @@ def set_title(name: str, value: str) -> ChangeSet:
add_operation(name, redo, undo)
change = ChangeSet()
change.update('title', 'null', 'value', 'str', value)
change.update('title', 'null', 'value')
return change

View File

@@ -39,5 +39,5 @@ def set_node_coord(name: str, node_type: str, id: str, x: float, y: float) -> Ch
add_operation(name, redo, undo)
change = ChangeSet()
change.update(node_type, id, 'coord', 'point', str({'x': x, 'y': y}))
change.update(node_type, id, 'coord')
return change

View File

@@ -30,5 +30,5 @@ def update(name: str, type: str, table: str, id_key: str, id_value: str, key: st
add_operation(name, redo, undo)
change = ChangeSet()
change.update(type, id_value, key, key_type, value)
change.update(type, id_value, key)
return change

View File

@@ -35,9 +35,10 @@ class TestApi:
self.enter(p)
change_set = add_junction(p, "j0", 0.0, 10.0, 20.0)
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == JUNCTION
assert change_set.added[0]['id'] == "j0"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == JUNCTION
assert change_set.operations[0]['id'] == "j0"
coord = get_junction_coord(p, 'j0')
assert coord['x'] == 0.0
assert coord['y'] == 10.0
@@ -47,23 +48,23 @@ class TestApi:
assert get_junction_demand(p, 'j') == None
assert get_junction_demand(p, 'j0') == "NULL"
change_set = set_junction_demand(p, 'j0', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == JUNCTION
assert change_set.updated[0]['id'] == 'j0'
assert change_set.updated[0]['property'] == 'demand'
assert change_set.updated[0]['property_type'] == 'float'
assert change_set.updated[0]['property_value'] == str(100.0)
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == JUNCTION
assert change_set.operations[0]['id'] == 'j0'
assert change_set.operations[0]['property'] == 'demand'
assert get_junction_demand(p, 'j0') == 100.0
# TODO: pattern
change_set = add_junction(p, "j1", 0.0, 10.0, 20.0)
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == JUNCTION
assert change_set.added[0]['id'] == "j1"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == JUNCTION
assert change_set.operations[0]['id'] == "j1"
change_set = add_junction(p, "j1", 0.0, 10.0, 20.0)
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
nodes = get_nodes(p)
assert len(nodes) == 2
@@ -71,21 +72,23 @@ class TestApi:
assert nodes[1] == "j1"
change_set = delete_junction(p, 'j1')
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == JUNCTION
assert change_set.deleted[0]['id'] == "j1"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == JUNCTION
assert change_set.operations[0]['id'] == "j1"
change_set = delete_junction(p, 'j1')
assert len(change_set.deleted) == 0
assert len(change_set.operations) == 0
nodes = get_nodes(p)
assert len(nodes) == 1
assert nodes[0] == "j0"
change_set = delete_junction(p, 'j0')
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == JUNCTION
assert change_set.deleted[0]['id'] == "j0"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == JUNCTION
assert change_set.operations[0]['id'] == "j0"
nodes = get_nodes(p)
assert len(nodes) == 0
@@ -97,40 +100,38 @@ class TestApi:
self.enter(p)
change_set = add_reservoir(p, "r0", 0.0, 10.0, 20.0)
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == RESERVOIR
assert change_set.added[0]['id'] == "r0"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == RESERVOIR
assert change_set.operations[0]['id'] == "r0"
change_set = add_reservoir(p, "r0", 0.0, 10.0, 20.0)
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
assert get_reservoir_head(p, 'r0') == 20.0
change_set = set_reservoir_head(p, 'r0', 100.0)
assert change_set.updated[0]['type'] == RESERVOIR
assert change_set.updated[0]['id'] == 'r0'
assert change_set.updated[0]['property'] == 'head'
assert change_set.updated[0]['property_type'] == 'float'
assert change_set.updated[0]['property_value'] == str(100.0)
assert change_set.operations[0]['type'] == RESERVOIR
assert change_set.operations[0]['id'] == 'r0'
assert change_set.operations[0]['property'] == 'head'
assert get_reservoir_head(p, 'r0') == 100.0
assert get_reservoir_coord(p, 'r0') == { 'x': 0.0, 'y': 10.0 }
change_set = set_reservoir_coord(p, 'r0', 100.0, 200.0)
assert change_set.updated[0]['type'] == RESERVOIR
assert change_set.updated[0]['id'] == 'r0'
assert change_set.updated[0]['property'] == 'coord'
assert change_set.updated[0]['property_type'] == 'point'
assert change_set.updated[0]['property_value'] == str({'x': 100.0, 'y': 200.0})
assert change_set.operations[0]['type'] == RESERVOIR
assert change_set.operations[0]['id'] == 'r0'
assert change_set.operations[0]['property'] == 'coord'
assert get_reservoir_coord(p, 'r0') == { 'x': 100.0, 'y': 200.0 }
# TODO: pattern
change_set = delete_reservoir(p, 'r0')
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == RESERVOIR
assert change_set.deleted[0]['id'] == "r0"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == RESERVOIR
assert change_set.operations[0]['id'] == "r0"
change_set = delete_reservoir(p, 'r0')
assert len(change_set.deleted) == 0
assert len(change_set.operations) == 0
self.leave(p)
@@ -140,17 +141,19 @@ class TestApi:
self.enter(p)
change_set = add_tank(p, "t0", 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0)
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == TANK
assert change_set.added[0]['id'] == "t0"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t0"
change_set = add_tank(p, "t1", 0.0, 10.0, 20.0)
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == TANK
assert change_set.added[0]['id'] == "t1"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t1"
change_set = add_tank(p, "t1", 0.0, 10.0, 20.0)
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
tanks = get_nodes(p)
assert len(tanks) == 2
@@ -159,50 +162,56 @@ class TestApi:
assert get_tank_elevation(p, 't0') == 10.0
change_set = set_tank_elevation(p, 't0', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == TANK
assert change_set.updated[0]['id'] == "t0"
assert change_set.updated[0]['property'] == 'elevation'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t0"
assert change_set.operations[0]['property'] == 'elevation'
assert get_tank_elevation(p, 't0') == 100.0
assert get_tank_init_level(p, 't0') == 10.0
change_set = set_tank_init_level(p, 't0', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == TANK
assert change_set.updated[0]['id'] == "t0"
assert change_set.updated[0]['property'] == 'init_level'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t0"
assert change_set.operations[0]['property'] == 'init_level'
assert get_tank_init_level(p, 't0') == 100.0
assert get_tank_min_level(p, 't0') == 10.0
change_set = set_tank_min_level(p, 't0', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == TANK
assert change_set.updated[0]['id'] == "t0"
assert change_set.updated[0]['property'] == 'min_level'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t0"
assert change_set.operations[0]['property'] == 'min_level'
assert get_tank_min_level(p, 't0') == 100.0
assert get_tank_max_level(p, 't0') == 10.0
change_set = set_tank_max_level(p, 't0', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == TANK
assert change_set.updated[0]['id'] == "t0"
assert change_set.updated[0]['property'] == 'max_level'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t0"
assert change_set.operations[0]['property'] == 'max_level'
assert get_tank_max_level(p, 't0') == 100.0
assert get_tank_diameter(p, 't0') == 10.0
change_set = set_tank_diameter(p, 't0', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == TANK
assert change_set.updated[0]['id'] == "t0"
assert change_set.updated[0]['property'] == 'diameter'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t0"
assert change_set.operations[0]['property'] == 'diameter'
assert get_tank_diameter(p, 't0') == 100.0
assert get_tank_min_vol(p, 't0') == 10.0
change_set = set_tank_min_vol(p, 't0', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == TANK
assert change_set.updated[0]['id'] == "t0"
assert change_set.updated[0]['property'] == 'min_vol'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t0"
assert change_set.operations[0]['property'] == 'min_vol'
assert get_tank_min_vol(p, 't0') == 100.0
# TODO: vol_curve
@@ -210,29 +219,32 @@ class TestApi:
assert get_tank_overflow(p, 't') == None
assert get_tank_overflow(p, 't0') == 'NULL'
change_set = set_tank_overflow(p, 't0', "XXX")
assert len(change_set.updated) == 0
assert len(change_set.operations) == 0
change_set = set_tank_overflow(p, 't0', OVERFLOW_YES)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == TANK
assert change_set.updated[0]['id'] == "t0"
assert change_set.updated[0]['property'] == 'overflow'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t0"
assert change_set.operations[0]['property'] == 'overflow'
assert get_tank_overflow(p, 't0') == OVERFLOW_YES
change_set = delete_tank(p, "t0")
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == TANK
assert change_set.deleted[0]['id'] == "t0"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t0"
tanks = get_nodes(p)
assert len(tanks) == 1
change_set = delete_tank(p, "t1")
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == TANK
assert change_set.deleted[0]['id'] == "t1"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == TANK
assert change_set.operations[0]['id'] == "t1"
change_set = delete_tank(p, "t1")
assert len(change_set.deleted) == 0
assert len(change_set.operations) == 0
tanks = get_nodes(p)
assert len(tanks) == 0
@@ -244,7 +256,7 @@ class TestApi:
self.enter(p)
change_set = add_pipe(p, 'p1', 'j1', 'j2', 10.0, 10.0, 10.0, 10.0, PIPE_STATUS_CLOSED)
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
add_junction(p, 'j1', 0.0, 0.0, 0.0)
add_junction(p, 'j2', 10.0, 10.0, 0.0)
@@ -258,18 +270,19 @@ class TestApi:
assert not is_link(p, 'p1')
change_set = add_pipe(p, 'p1', 'j1', 'j2', 10.0, 10.0, 10.0, 10.0, "XXX")
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
change_set = add_pipe(p, 'p1', 'j1', 'j1', 10.0, 10.0, 10.0, 10.0, PIPE_STATUS_CLOSED)
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
change_set = add_pipe(p, 'p1', 'j1', 'j2', 10.0, 10.0, 10.0, 10.0, PIPE_STATUS_CLOSED)
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == PIPE
assert change_set.added[0]['id'] == "p1"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == "p1"
change_set = add_pipe(p, 'p1', 'j1', 'j2', 10.0, 10.0, 10.0, 10.0, PIPE_STATUS_CLOSED)
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
pipes = get_links(p)
assert len(pipes) == 1
@@ -283,53 +296,60 @@ class TestApi:
assert get_pipe_status(p, 'p1') == PIPE_STATUS_CLOSED
change_set = set_pipe_node1(p, 'p1', 'j2')
assert len(change_set.updated) == 0
assert len(change_set.operations) == 0
change_set = set_pipe_node2(p, 'p1', 'j1')
assert len(change_set.updated) == 0
assert len(change_set.operations) == 0
change_set = set_pipe_status(p, 'p1', "XXX")
assert len(change_set.updated) == 0
assert len(change_set.operations) == 0
change_set = set_pipe_node1(p, 'p1', 'j3')
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == PIPE
assert change_set.updated[0]['id'] == 'p1'
assert change_set.updated[0]['property'] == 'node1'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == 'p1'
assert change_set.operations[0]['property'] == 'node1'
change_set = set_pipe_node2(p, 'p1', 'j4')
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == PIPE
assert change_set.updated[0]['id'] == 'p1'
assert change_set.updated[0]['property'] == 'node2'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == 'p1'
assert change_set.operations[0]['property'] == 'node2'
change_set = set_pipe_length(p, 'p1', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == PIPE
assert change_set.updated[0]['id'] == 'p1'
assert change_set.updated[0]['property'] == 'length'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == 'p1'
assert change_set.operations[0]['property'] == 'length'
change_set = set_pipe_diameter(p, 'p1', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == PIPE
assert change_set.updated[0]['id'] == 'p1'
assert change_set.updated[0]['property'] == 'diameter'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == 'p1'
assert change_set.operations[0]['property'] == 'diameter'
change_set = set_pipe_roughness(p, 'p1', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == PIPE
assert change_set.updated[0]['id'] == 'p1'
assert change_set.updated[0]['property'] == 'roughness'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == 'p1'
assert change_set.operations[0]['property'] == 'roughness'
change_set = set_pipe_minor_loss(p, 'p1', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == PIPE
assert change_set.updated[0]['id'] == 'p1'
assert change_set.updated[0]['property'] == 'minor_loss'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == 'p1'
assert change_set.operations[0]['property'] == 'minor_loss'
change_set = set_pipe_status(p, 'p1', PIPE_STATUS_OPEN)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == PIPE
assert change_set.updated[0]['id'] == 'p1'
assert change_set.updated[0]['property'] == 'status'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == 'p1'
assert change_set.operations[0]['property'] == 'status'
assert get_pipe_node1(p, 'p1') == 'j3'
assert get_pipe_node2(p, 'p1') == 'j4'
@@ -340,30 +360,33 @@ class TestApi:
assert get_pipe_status(p, 'p1') == PIPE_STATUS_OPEN
change_set = add_pipe(p, 'p2', 'j1', 'j2', 10.0, 10.0, 10.0, 10.0, PIPE_STATUS_CLOSED)
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == PIPE
assert change_set.added[0]['id'] == "p2"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == "p2"
pipes = get_links(p)
assert len(pipes) == 2
change_set = delete_pipe(p, 'p')
assert len(change_set.deleted) == 0
assert len(change_set.operations) == 0
assert is_pipe(p, 'p1')
change_set = delete_pipe(p, 'p1')
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == PIPE
assert change_set.deleted[0]['id'] == "p1"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == "p1"
pipes = get_links(p)
assert len(pipes) == 1
change_set = delete_pipe(p, 'p2')
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == PIPE
assert change_set.deleted[0]['id'] == "p2"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == PIPE
assert change_set.operations[0]['id'] == "p2"
self.leave(p)
@@ -372,7 +395,7 @@ class TestApi:
self.enter(p)
change_set = add_pump(p, 'p1', 'j1', 'j2')
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
add_junction(p, 'j1', 0.0, 0.0, 0.0)
add_junction(p, 'j2', 10.0, 10.0, 0.0)
@@ -386,15 +409,16 @@ class TestApi:
assert not is_link(p, 'p1')
change_set = add_pump(p, 'p1', 'j1', 'j1')
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
change_set = add_pump(p, 'p1', 'j1', 'j2')
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == PUMP
assert change_set.added[0]['id'] == "p1"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == PUMP
assert change_set.operations[0]['id'] == "p1"
change_set = add_pump(p, 'p1', 'j1', 'j2')
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
pumps = get_links(p)
assert len(pumps) == 1
@@ -403,50 +427,55 @@ class TestApi:
assert get_pump_node2(p, 'p1') == 'j2'
change_set = set_pump_node1(p, 'p1', 'j2')
assert len(change_set.updated) == 0
assert len(change_set.operations) == 0
change_set = set_pump_node2(p, 'p1', 'j1')
assert len(change_set.updated) == 0
assert len(change_set.operations) == 0
change_set = set_pump_node1(p, 'p1', 'j3')
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == PUMP
assert change_set.updated[0]['id'] == 'p1'
assert change_set.updated[0]['property'] == 'node1'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == PUMP
assert change_set.operations[0]['id'] == 'p1'
assert change_set.operations[0]['property'] == 'node1'
change_set = set_pump_node2(p, 'p1', 'j4')
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == PUMP
assert change_set.updated[0]['id'] == 'p1'
assert change_set.updated[0]['property'] == 'node2'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == PUMP
assert change_set.operations[0]['id'] == 'p1'
assert change_set.operations[0]['property'] == 'node2'
assert get_pump_node1(p, 'p1') == 'j3'
assert get_pump_node2(p, 'p1') == 'j4'
change_set = add_pump(p, 'p2', 'j1', 'j2')
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == PUMP
assert change_set.added[0]['id'] == "p2"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == PUMP
assert change_set.operations[0]['id'] == "p2"
pumps = get_links(p)
assert len(pumps) == 2
change_set = delete_pump(p, 'p')
assert len(change_set.deleted) == 0
assert len(change_set.operations) == 0
assert is_pump(p, 'p1')
change_set = delete_pump(p, 'p1')
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == PUMP
assert change_set.deleted[0]['id'] == "p1"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == PUMP
assert change_set.operations[0]['id'] == "p1"
pumps = get_links(p)
assert len(pumps) == 1
change_set = delete_pump(p, 'p2')
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == PUMP
assert change_set.deleted[0]['id'] == "p2"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == PUMP
assert change_set.operations[0]['id'] == "p2"
self.leave(p)
@@ -455,7 +484,7 @@ class TestApi:
self.enter(p)
change_set = add_valve(p, 'v1', 'j1', 'j2', 10.0, VALVES_TYPE_FCV, 10.0, 10.0)
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
add_junction(p, 'j1', 0.0, 0.0, 0.0)
add_junction(p, 'j2', 10.0, 10.0, 0.0)
@@ -469,18 +498,19 @@ class TestApi:
assert not is_link(p, 'v1')
change_set = add_valve(p, 'v1', 'j1', 'j2', 10.0, "xxx", 10.0, 10.0)
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
change_set = add_valve(p, 'v1', 'j1', 'j1', 10.0, VALVES_TYPE_FCV, 10.0, 10.0)
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
change_set = add_valve(p, 'v1', 'j1', 'j2', 10.0, VALVES_TYPE_FCV, 10.0, 10.0)
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == VALVE
assert change_set.added[0]['id'] == "v1"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == VALVE
assert change_set.operations[0]['id'] == "v1"
change_set = add_valve(p, 'v1', 'j1', 'j2', 10.0, VALVES_TYPE_FCV, 10.0, 10.0)
assert len(change_set.added) == 0
assert len(change_set.operations) == 0
valves = get_links(p)
assert len(valves) == 1
@@ -493,47 +523,53 @@ class TestApi:
assert get_valve_minor_loss(p, 'v1') == 10.0
change_set = set_valve_node1(p, 'v1', 'j2')
assert len(change_set.updated) == 0
assert len(change_set.operations) == 0
change_set = set_valve_node2(p, 'v1', 'j1')
assert len(change_set.updated) == 0
assert len(change_set.operations) == 0
change_set = set_valve_type(p, 'v1', "XXX")
assert len(change_set.updated) == 0
assert len(change_set.operations) == 0
change_set = set_valve_node1(p, 'v1', 'j3')
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == VALVE
assert change_set.updated[0]['id'] == 'v1'
assert change_set.updated[0]['property'] == 'node1'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == VALVE
assert change_set.operations[0]['id'] == 'v1'
assert change_set.operations[0]['property'] == 'node1'
change_set = set_valve_node2(p, 'v1', 'j4')
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == VALVE
assert change_set.updated[0]['id'] == 'v1'
assert change_set.updated[0]['property'] == 'node2'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == VALVE
assert change_set.operations[0]['id'] == 'v1'
assert change_set.operations[0]['property'] == 'node2'
change_set = set_valve_diameter(p, 'v1', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == VALVE
assert change_set.updated[0]['id'] == 'v1'
assert change_set.updated[0]['property'] == 'diameter'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == VALVE
assert change_set.operations[0]['id'] == 'v1'
assert change_set.operations[0]['property'] == 'diameter'
change_set = set_valve_type(p, 'v1', VALVES_TYPE_GPV)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == VALVE
assert change_set.updated[0]['id'] == 'v1'
assert change_set.updated[0]['property'] == 'type'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == VALVE
assert change_set.operations[0]['id'] == 'v1'
assert change_set.operations[0]['property'] == 'type'
change_set = set_valve_setting(p, 'v1', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == VALVE
assert change_set.updated[0]['id'] == 'v1'
assert change_set.updated[0]['property'] == 'setting'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == VALVE
assert change_set.operations[0]['id'] == 'v1'
assert change_set.operations[0]['property'] == 'setting'
change_set = set_valve_minor_loss(p, 'v1', 100.0)
assert len(change_set.updated) == 1
assert change_set.updated[0]['type'] == VALVE
assert change_set.updated[0]['id'] == 'v1'
assert change_set.updated[0]['property'] == 'minor_loss'
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'update'
assert change_set.operations[0]['type'] == VALVE
assert change_set.operations[0]['id'] == 'v1'
assert change_set.operations[0]['property'] == 'minor_loss'
assert get_valve_node1(p, 'v1') == 'j3'
assert get_valve_node2(p, 'v1') == 'j4'
@@ -543,30 +579,33 @@ class TestApi:
assert get_valve_minor_loss(p, 'v1') == 100.0
change_set = add_valve(p, 'v2', 'j1', 'j2', 10.0, VALVES_TYPE_FCV, 10.0, 10.0)
assert len(change_set.added) == 1
assert change_set.added[0]['type'] == VALVE
assert change_set.added[0]['id'] == "v2"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'add'
assert change_set.operations[0]['type'] == VALVE
assert change_set.operations[0]['id'] == "v2"
valves = get_links(p)
assert len(valves) == 2
change_set = delete_valve(p, 'v')
assert len(change_set.deleted) == 0
assert len(change_set.operations) == 0
assert is_valve(p, 'v1')
change_set = delete_valve(p, 'v1')
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == VALVE
assert change_set.deleted[0]['id'] == "v1"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == VALVE
assert change_set.operations[0]['id'] == "v1"
valves = get_links(p)
assert len(valves) == 1
change_set = delete_valve(p, 'v2')
assert len(change_set.deleted) == 1
assert change_set.deleted[0]['type'] == VALVE
assert change_set.deleted[0]['id'] == "v2"
assert len(change_set.operations) == 1
assert change_set.operations[0]['operation'] == 'delete'
assert change_set.operations[0]['type'] == VALVE
assert change_set.operations[0]['id'] == "v2"
self.leave(p)