Add energy api and test
This commit is contained in:
@@ -18,6 +18,9 @@ class TestApi:
|
||||
delete_project(p)
|
||||
|
||||
|
||||
# project
|
||||
|
||||
|
||||
def test_project(self):
|
||||
p = 'test_project'
|
||||
|
||||
@@ -62,6 +65,121 @@ class TestApi:
|
||||
assert get_project_open_count(p) == 0
|
||||
|
||||
|
||||
# operation
|
||||
|
||||
|
||||
def test_snapshot(self):
|
||||
p = "test_snapshot"
|
||||
self.enter(p)
|
||||
|
||||
add_junction(p, ChangeSet({'id': 'j1', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_junction(p, ChangeSet({'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_junction(p, ChangeSet({'id': 'j3', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_junction(p, ChangeSet({'id': 'j4', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
|
||||
client_op = get_current_operation(p)
|
||||
assert client_op == 4
|
||||
assert take_snapshot(p, 'x') == 4
|
||||
|
||||
execute_undo(p)
|
||||
execute_undo(p)
|
||||
add_junction(p, ChangeSet({'id': 'j5', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_junction(p, ChangeSet({'id': 'j6', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
|
||||
assert take_snapshot(p, 'xx') == 6
|
||||
|
||||
cs = sync_with_server(p, client_op).operations
|
||||
cs[0]['operation'] = API_DELETE
|
||||
cs[0]['id'] = 'j4'
|
||||
cs[1]['operation'] = API_DELETE
|
||||
cs[1]['id'] = 'j3'
|
||||
cs[2]['operation'] = API_ADD
|
||||
cs[2]['id'] = 'j5'
|
||||
cs[3]['operation'] = API_ADD
|
||||
cs[3]['id'] = 'j6'
|
||||
|
||||
cs = pick_snapshot(p, 'x').operations
|
||||
cs[0]['operation'] = 'delete'
|
||||
cs[0]['id'] = 'j6'
|
||||
cs[1]['operation'] = 'delete'
|
||||
cs[1]['id'] = 'j5'
|
||||
cs[2]['operation'] = 'add'
|
||||
cs[2]['id'] = 'j3'
|
||||
cs[3]['operation'] = 'add'
|
||||
cs[3]['id'] = 'j4'
|
||||
|
||||
assert get_nodes(p) == ['j1', 'j2', 'j3', 'j4']
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_batch_commands(self):
|
||||
p = 'test_batch_commands'
|
||||
self.enter(p)
|
||||
|
||||
cs = ChangeSet()
|
||||
cs.add({'type': JUNCTION, 'id': 'j1', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
cs.add({'type': JUNCTION, 'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
cs.add({'type': JUNCTION, 'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}) # fail
|
||||
|
||||
cs = execute_batch_commands(p, cs)
|
||||
assert len(cs.operations) == 2
|
||||
|
||||
cs = ChangeSet()
|
||||
cs.delete({'type': JUNCTION, 'id': 'j1'})
|
||||
cs.delete({'type': JUNCTION, 'id': 'j2'})
|
||||
|
||||
cs = execute_batch_commands(p, cs)
|
||||
assert len(cs.operations) == 2
|
||||
|
||||
cs = execute_undo(p)
|
||||
assert len(cs.operations) == 1
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_batch_command(self):
|
||||
p = 'test_batch_command'
|
||||
self.enter(p)
|
||||
|
||||
cs = ChangeSet()
|
||||
cs.add({'type': JUNCTION, 'id': 'j1', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
cs.add({'type': JUNCTION, 'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
cs.add({'type': JUNCTION, 'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}) # fail
|
||||
|
||||
cs = execute_batch_command(p, cs)
|
||||
assert len(cs.operations) == 0
|
||||
|
||||
assert get_current_operation(p) == 0
|
||||
|
||||
cs = ChangeSet()
|
||||
cs.add({'type': JUNCTION, 'id': 'j1', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
cs.add({'type': JUNCTION, 'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
|
||||
cs = execute_batch_command(p, cs)
|
||||
|
||||
assert get_current_operation(p) == 1
|
||||
|
||||
cs = ChangeSet()
|
||||
cs.delete({'type': JUNCTION, 'id': 'j1'})
|
||||
cs.delete({'type': JUNCTION, 'id': 'j2'})
|
||||
|
||||
cs = execute_batch_command(p, cs)
|
||||
|
||||
assert get_current_operation(p) == 2
|
||||
|
||||
cs = execute_undo(p)
|
||||
assert get_current_operation(p) == 1
|
||||
|
||||
cs = execute_undo(p)
|
||||
assert get_current_operation(p) == 0
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 1 title
|
||||
|
||||
|
||||
def test_title(self):
|
||||
p = 'test_title'
|
||||
self.enter(p)
|
||||
@@ -116,6 +234,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 2 junction
|
||||
|
||||
|
||||
def test_junction(self):
|
||||
p = 'test_junction'
|
||||
self.enter(p)
|
||||
@@ -278,6 +399,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 3 reservoir
|
||||
|
||||
|
||||
def test_reservoir(self):
|
||||
p = 'test_reservoir'
|
||||
self.enter(p)
|
||||
@@ -429,6 +553,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 4 tank
|
||||
|
||||
|
||||
def test_tank(self):
|
||||
p = 'test_tank'
|
||||
self.enter(p)
|
||||
@@ -640,6 +767,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 5 pipe
|
||||
|
||||
|
||||
def test_pipe(self):
|
||||
p = 'test_pipe'
|
||||
self.enter(p)
|
||||
@@ -833,6 +963,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 6 pump
|
||||
|
||||
|
||||
def test_pump(self):
|
||||
p = 'test_pump'
|
||||
self.enter(p)
|
||||
@@ -992,6 +1125,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 7 valve
|
||||
|
||||
|
||||
def test_valve(self):
|
||||
p = 'test_valve'
|
||||
self.enter(p)
|
||||
@@ -1174,6 +1310,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 8 tag
|
||||
|
||||
|
||||
def test_tag(self):
|
||||
p = 'test_tag'
|
||||
self.enter(p)
|
||||
@@ -1264,38 +1403,7 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_rule(self):
|
||||
p = 'test_rule'
|
||||
self.enter(p)
|
||||
|
||||
assert get_rule(p)['rule'] == ''
|
||||
|
||||
set_rule(p, ChangeSet({'rule': 'x'}))
|
||||
assert get_rule(p)['rule'] == 'x'
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_rule_op(self):
|
||||
p = 'test_rule_op'
|
||||
self.enter(p)
|
||||
|
||||
cs = set_rule(p, ChangeSet({'rule': 'x'})).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'rule'
|
||||
assert cs['rule'] == 'x'
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'rule'
|
||||
assert cs['rule'] == ''
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'rule'
|
||||
assert cs['rule'] == 'x'
|
||||
|
||||
self.leave(p)
|
||||
# 9 demand
|
||||
|
||||
|
||||
def test_demand(self):
|
||||
@@ -1397,6 +1505,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 10 status
|
||||
|
||||
|
||||
def test_status(self):
|
||||
p = 'test_status'
|
||||
self.enter(p)
|
||||
@@ -1475,6 +1586,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 11 pattern
|
||||
|
||||
|
||||
def test_pattern(self):
|
||||
p = 'test_pattern'
|
||||
self.enter(p)
|
||||
@@ -1526,6 +1640,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 12 curve
|
||||
|
||||
|
||||
def test_curve(self):
|
||||
p = 'test_curve'
|
||||
self.enter(p)
|
||||
@@ -1592,6 +1709,461 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 13 control
|
||||
|
||||
|
||||
def test_control(self):
|
||||
p = 'test_control'
|
||||
self.enter(p)
|
||||
|
||||
assert get_control(p)['control'] == ''
|
||||
|
||||
set_control(p, ChangeSet({'control': 'x'}))
|
||||
assert get_control(p)['control'] == 'x'
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_control_op(self):
|
||||
p = 'test_control_op'
|
||||
self.enter(p)
|
||||
|
||||
cs = set_control(p, ChangeSet({'control': 'x'})).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'control'
|
||||
assert cs['control'] == 'x'
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'control'
|
||||
assert cs['control'] == ''
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'control'
|
||||
assert cs['control'] == 'x'
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 14 rule
|
||||
|
||||
|
||||
def test_rule(self):
|
||||
p = 'test_rule'
|
||||
self.enter(p)
|
||||
|
||||
assert get_rule(p)['rule'] == ''
|
||||
|
||||
set_rule(p, ChangeSet({'rule': 'x'}))
|
||||
assert get_rule(p)['rule'] == 'x'
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_rule_op(self):
|
||||
p = 'test_rule_op'
|
||||
self.enter(p)
|
||||
|
||||
cs = set_rule(p, ChangeSet({'rule': 'x'})).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'rule'
|
||||
assert cs['rule'] == 'x'
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'rule'
|
||||
assert cs['rule'] == ''
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'rule'
|
||||
assert cs['rule'] == 'x'
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 15 energy
|
||||
|
||||
|
||||
def test_global_energy(self):
|
||||
p = 'test_global_energy'
|
||||
self.enter(p)
|
||||
|
||||
ge = get_global_energy(p)
|
||||
assert ge['price'] == 0.0
|
||||
assert ge['pattern'] == None
|
||||
assert ge['effic'] == float(75)
|
||||
assert ge['demand_charge'] == 0.0
|
||||
|
||||
set_global_energy(p, ChangeSet({ 'price' : 10.0 }))
|
||||
ge = get_global_energy(p)
|
||||
assert ge['price'] == 10.0
|
||||
assert ge['pattern'] == None
|
||||
assert ge['effic'] == float(75)
|
||||
assert ge['demand_charge'] == 0.0
|
||||
|
||||
add_pattern(p, ChangeSet({'id' : 'p0', 'factors': [1.0, 2.0, 3.0]}))
|
||||
set_global_energy(p, ChangeSet({ 'pattern' : 'p0' }))
|
||||
ge = get_global_energy(p)
|
||||
assert ge['price'] == 10.0
|
||||
assert ge['pattern'] == 'p0'
|
||||
assert ge['effic'] == float(75)
|
||||
assert ge['demand_charge'] == 0.0
|
||||
|
||||
set_global_energy(p, ChangeSet({ 'effic' : 0.0 }))
|
||||
ge = get_global_energy(p)
|
||||
assert ge['price'] == 10.0
|
||||
assert ge['pattern'] == 'p0'
|
||||
assert ge['effic'] == 0.0
|
||||
assert ge['demand_charge'] == 0.0
|
||||
|
||||
set_global_energy(p, ChangeSet({ 'demand_charge' : 10.0 }))
|
||||
ge = get_global_energy(p)
|
||||
assert ge['price'] == 10.0
|
||||
assert ge['pattern'] == 'p0'
|
||||
assert ge['effic'] == 0.0
|
||||
assert ge['demand_charge'] == 10.0
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_global_energy_op(self):
|
||||
p = 'test_global_energy_op'
|
||||
self.enter(p)
|
||||
|
||||
add_pattern(p, ChangeSet({'id' : 'p0', 'factors': [1.0, 2.0, 3.0]}))
|
||||
|
||||
cs = set_global_energy(p, ChangeSet({ 'price' : 10.0 })).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == float(75)
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == float(75)
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == float(75)
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = set_global_energy(p, ChangeSet({ 'pattern' : 'p0' })).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == 'p0'
|
||||
assert cs['effic'] == float(75)
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == float(75)
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == 'p0'
|
||||
assert cs['effic'] == float(75)
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = set_global_energy(p, ChangeSet({ 'effic' : 0.0 })).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == 'p0'
|
||||
assert cs['effic'] == 0.0
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == 'p0'
|
||||
assert cs['effic'] == float(75)
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == 'p0'
|
||||
assert cs['effic'] == 0.0
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = set_global_energy(p, ChangeSet({ 'demand_charge' : 10.0 })).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == 'p0'
|
||||
assert cs['effic'] == 0.0
|
||||
assert cs['demand_charge'] == 10.0
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == 'p0'
|
||||
assert cs['effic'] == 0.0
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == 'p0'
|
||||
assert cs['effic'] == 0.0
|
||||
assert cs['demand_charge'] == 10.0
|
||||
|
||||
cs = set_global_energy(p, ChangeSet({ 'price' : 0.0, 'pattern' : None, 'effic' : float(75), 'demand_charge' : 0.0 })).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == float(75)
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 10.0
|
||||
assert cs['pattern'] == 'p0'
|
||||
assert cs['effic'] == 0.0
|
||||
assert cs['demand_charge'] == 10.0
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'global_energy'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == float(75)
|
||||
assert cs['demand_charge'] == 0.0
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_pump_energy(self):
|
||||
p = 'test_pump_energy'
|
||||
self.enter(p)
|
||||
|
||||
ge = get_pump_energy(p, 'p0')
|
||||
assert ge['id'] == 'p0'
|
||||
assert ge['price'] == None
|
||||
assert ge['pattern'] == None
|
||||
assert ge['effic'] == None
|
||||
|
||||
add_junction(p, ChangeSet({'id': 'j1', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_junction(p, ChangeSet({'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_pump(p, ChangeSet({'id': 'p0', 'node1': 'j1', 'node2': 'j2', 'power': 0.0}))
|
||||
|
||||
set_pump_energy(p, ChangeSet({'id' : 'p0'}))
|
||||
ge = get_pump_energy(p, 'p0')
|
||||
assert ge['id'] == 'p0'
|
||||
assert ge['price'] == None
|
||||
assert ge['pattern'] == None
|
||||
assert ge['effic'] == None
|
||||
|
||||
set_pump_energy(p, ChangeSet({'id' : 'p0', 'price': 0.0}))
|
||||
ge = get_pump_energy(p, 'p0')
|
||||
assert ge['id'] == 'p0'
|
||||
assert ge['price'] == 0.0
|
||||
assert ge['pattern'] == None
|
||||
assert ge['effic'] == None
|
||||
|
||||
add_pattern(p, ChangeSet({'id' : 'pa0', 'factors': [1.0, 2.0, 3.0]}))
|
||||
set_pump_energy(p, ChangeSet({'id' : 'p0', 'pattern': 'pa0'}))
|
||||
ge = get_pump_energy(p, 'p0')
|
||||
assert ge['id'] == 'p0'
|
||||
assert ge['price'] == 0.0
|
||||
assert ge['pattern'] == 'pa0'
|
||||
assert ge['effic'] == None
|
||||
|
||||
set_curve(p, ChangeSet({'id' : 'c0', 'coords': [{'x': 1.0, 'y': 2.0}, {'x': 2.0, 'y': 1.0}]}))
|
||||
set_pump_energy(p, ChangeSet({'id' : 'p0', 'effic': 'c0'}))
|
||||
ge = get_pump_energy(p, 'p0')
|
||||
assert ge['id'] == 'p0'
|
||||
assert ge['price'] == 0.0
|
||||
assert ge['pattern'] == 'pa0'
|
||||
assert ge['effic'] == 'c0'
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_pump_energy_op(self):
|
||||
p = 'test_pump_energy_op'
|
||||
self.enter(p)
|
||||
|
||||
add_junction(p, ChangeSet({'id': 'j1', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_junction(p, ChangeSet({'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_pump(p, ChangeSet({'id': 'p0', 'node1': 'j1', 'node2': 'j2', 'power': 0.0}))
|
||||
add_pattern(p, ChangeSet({'id' : 'pa0', 'factors': [1.0, 2.0, 3.0]}))
|
||||
set_curve(p, ChangeSet({'id' : 'c0', 'coords': [{'x': 1.0, 'y': 2.0}, {'x': 2.0, 'y': 1.0}]}))
|
||||
|
||||
cs = set_pump_energy(p, ChangeSet({'id' : 'p0'})).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == None
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == None
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == None
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = set_pump_energy(p, ChangeSet({'id' : 'p0', 'price': 0.0})).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == None
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = set_pump_energy(p, ChangeSet({'id' : 'p0', 'pattern': 'pa0'})).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == 'pa0'
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == 'pa0'
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = set_pump_energy(p, ChangeSet({'id' : 'p0', 'effic': 'c0'})).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == 'pa0'
|
||||
assert cs['effic'] == 'c0'
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == 'pa0'
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == 'pa0'
|
||||
assert cs['effic'] == 'c0'
|
||||
|
||||
cs = set_pump_energy(p, ChangeSet({'id' : 'p0', 'price': None, 'pattern': None, 'effic': None})).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == None
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == 'pa0'
|
||||
assert cs['effic'] == 'c0'
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == None
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = set_pump_energy(p, ChangeSet({'id' : 'p0', 'price': 0.0, 'pattern': 'pa0', 'effic': 'c0'})).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == 'pa0'
|
||||
assert cs['effic'] == 'c0'
|
||||
|
||||
cs = execute_undo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == None
|
||||
assert cs['pattern'] == None
|
||||
assert cs['effic'] == None
|
||||
|
||||
cs = execute_redo(p).operations[0]
|
||||
assert cs['operation'] == API_UPDATE
|
||||
assert cs['type'] == 'pump_energy'
|
||||
assert cs['id'] == 'p0'
|
||||
assert cs['price'] == 0.0
|
||||
assert cs['pattern'] == 'pa0'
|
||||
assert cs['effic'] == 'c0'
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 16 emitter
|
||||
|
||||
|
||||
def test_emitter(self):
|
||||
p = 'test_emitter'
|
||||
self.enter(p)
|
||||
@@ -1646,6 +2218,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 21 time
|
||||
|
||||
|
||||
def test_time(self):
|
||||
p = 'test_time'
|
||||
self.enter(p)
|
||||
@@ -1742,6 +2317,9 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
# 22 option
|
||||
|
||||
|
||||
def test_option(self):
|
||||
p = 'test_option'
|
||||
self.enter(p)
|
||||
@@ -1910,114 +2488,5 @@ class TestApi:
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_snapshot(self):
|
||||
p = "test_snapshot"
|
||||
self.enter(p)
|
||||
|
||||
add_junction(p, ChangeSet({'id': 'j1', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_junction(p, ChangeSet({'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_junction(p, ChangeSet({'id': 'j3', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_junction(p, ChangeSet({'id': 'j4', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
|
||||
client_op = get_current_operation(p)
|
||||
assert client_op == 4
|
||||
assert take_snapshot(p, 'x') == 4
|
||||
|
||||
execute_undo(p)
|
||||
execute_undo(p)
|
||||
add_junction(p, ChangeSet({'id': 'j5', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
add_junction(p, ChangeSet({'id': 'j6', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}))
|
||||
|
||||
assert take_snapshot(p, 'xx') == 6
|
||||
|
||||
cs = sync_with_server(p, client_op).operations
|
||||
cs[0]['operation'] = API_DELETE
|
||||
cs[0]['id'] = 'j4'
|
||||
cs[1]['operation'] = API_DELETE
|
||||
cs[1]['id'] = 'j3'
|
||||
cs[2]['operation'] = API_ADD
|
||||
cs[2]['id'] = 'j5'
|
||||
cs[3]['operation'] = API_ADD
|
||||
cs[3]['id'] = 'j6'
|
||||
|
||||
cs = pick_snapshot(p, 'x').operations
|
||||
cs[0]['operation'] = 'delete'
|
||||
cs[0]['id'] = 'j6'
|
||||
cs[1]['operation'] = 'delete'
|
||||
cs[1]['id'] = 'j5'
|
||||
cs[2]['operation'] = 'add'
|
||||
cs[2]['id'] = 'j3'
|
||||
cs[3]['operation'] = 'add'
|
||||
cs[3]['id'] = 'j4'
|
||||
|
||||
assert get_nodes(p) == ['j1', 'j2', 'j3', 'j4']
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_batch_commands(self):
|
||||
p = 'test_batch_commands'
|
||||
self.enter(p)
|
||||
|
||||
cs = ChangeSet()
|
||||
cs.add({'type': JUNCTION, 'id': 'j1', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
cs.add({'type': JUNCTION, 'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
cs.add({'type': JUNCTION, 'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}) # fail
|
||||
|
||||
cs = execute_batch_commands(p, cs)
|
||||
assert len(cs.operations) == 2
|
||||
|
||||
cs = ChangeSet()
|
||||
cs.delete({'type': JUNCTION, 'id': 'j1'})
|
||||
cs.delete({'type': JUNCTION, 'id': 'j2'})
|
||||
|
||||
cs = execute_batch_commands(p, cs)
|
||||
assert len(cs.operations) == 2
|
||||
|
||||
cs = execute_undo(p)
|
||||
assert len(cs.operations) == 1
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
def test_batch_command(self):
|
||||
p = 'test_batch_command'
|
||||
self.enter(p)
|
||||
|
||||
cs = ChangeSet()
|
||||
cs.add({'type': JUNCTION, 'id': 'j1', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
cs.add({'type': JUNCTION, 'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
cs.add({'type': JUNCTION, 'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0}) # fail
|
||||
|
||||
cs = execute_batch_command(p, cs)
|
||||
assert len(cs.operations) == 0
|
||||
|
||||
assert get_current_operation(p) == 0
|
||||
|
||||
cs = ChangeSet()
|
||||
cs.add({'type': JUNCTION, 'id': 'j1', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
cs.add({'type': JUNCTION, 'id': 'j2', 'x': 0.0, 'y': 10.0, 'elevation': 20.0})
|
||||
|
||||
cs = execute_batch_command(p, cs)
|
||||
|
||||
assert get_current_operation(p) == 1
|
||||
|
||||
cs = ChangeSet()
|
||||
cs.delete({'type': JUNCTION, 'id': 'j1'})
|
||||
cs.delete({'type': JUNCTION, 'id': 'j2'})
|
||||
|
||||
cs = execute_batch_command(p, cs)
|
||||
|
||||
assert get_current_operation(p) == 2
|
||||
|
||||
cs = execute_undo(p)
|
||||
assert get_current_operation(p) == 1
|
||||
|
||||
cs = execute_undo(p)
|
||||
assert get_current_operation(p) == 0
|
||||
|
||||
self.leave(p)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pytest.main()
|
||||
|
||||
Reference in New Issue
Block a user