async def ptest(circuit, delay, slog): ie1 = edzed.InputExp('ie', duration=0.25, expired="exp", initdef="ok1", persistent=True) state = {} circuit.set_persistent_data(state) asyncio.create_task(circuit.run_forever()) await asyncio.sleep(0.1) await circuit.shutdown() assert ie1.key in state # circuit 2 await asyncio.sleep(delay) edzed.reset_circuit() circuit = edzed.get_circuit() circuit.set_persistent_data(state) logger = TimeLogger('logger') ie2 = edzed.InputExp('ie', duration=0.25, expired="exp", initdef="ok2", persistent=True, on_output=edzed.Event(logger)) asyncio.create_task(circuit.run_forever()) await asyncio.sleep(0.30) await circuit.shutdown() logger.compare(slog)
def test_reset_circuit(circuit): """Reset creates a new empty circuit.""" assert circuit is edzed.get_circuit() assert list(circuit.getblocks()) == [] blk = Noop('test') assert list(circuit.getblocks()) == [blk] edzed.reset_circuit() newcircuit = edzed.get_circuit() assert newcircuit is not circuit assert list(newcircuit.getblocks()) == []
def test_no_cross_circuit_events(circuit): inp1 = edzed.Input('inp', comment="circuit 1", initdef=None) event = edzed.Event(inp1) init(circuit) event.send(inp1, value=1) assert inp1.output == 1 edzed.reset_circuit() inp2 = edzed.Input('inp', comment="circuit 2", initdef=None) init(circuit) with pytest.raises(edzed.EdzedCircuitError, match="not in the current circuit"): event.send(inp2, value=2)
def test_no_cross_circuit_inputs(circuit): """No cross circuit connections. Constants are an exception.""" noop1 = Noop('noop') msg1 = edzed.Const("hello!") init(circuit) edzed.reset_circuit() noop2 = Noop('noop').connect(noop1) circuit2 = edzed.get_circuit() with pytest.raises(ValueError, match="not in the current circuit"): init(circuit2) # Const objects do not belong to specific circuit edzed.reset_circuit() noop3 = Noop('noop').connect(msg1) circuit3 = edzed.get_circuit() init(circuit3)
async def test_persistent(circuit): td = edzed.TimeDate("pers", persistent=True) storage = {} circuit.set_persistent_data(storage) asyncio.create_task(circuit.run_forever()) await circuit.wait_init() assert td.get_state() == {'times': None, 'dates': None, 'weekdays': None} conf = edzed.TimeDate.parse("1:0-2:0", None, "7") td.event('reconfig', **conf) assert td.get_state() == conf await circuit.shutdown() assert storage[td.key] == conf edzed.reset_circuit() td = edzed.TimeDate("pers", persistent=True) circuit = edzed.get_circuit() circuit.set_persistent_data(storage) asyncio.create_task(circuit.run_forever()) await circuit.wait_init() assert td.get_state() == conf await circuit.shutdown() assert storage[td.key] == conf
async def test_persistent(circuit): td = edzed.TimeSpan("pers", persistent=True) storage = {} circuit.set_persistent_data(storage) asyncio.create_task(circuit.run_forever()) await circuit.wait_init() assert td.get_state() == [] conf = edzed.TimeSpan.parse( "2001August31.23:2:3-31.may2008 0:0,2011August31.1:2:3-31.may2018 1:59") td.event('reconfig', span=conf) assert td.get_state() == conf await circuit.shutdown() assert storage[td.key] == conf edzed.reset_circuit() td = edzed.TimeSpan("pers", persistent=True) circuit = edzed.get_circuit() circuit.set_persistent_data(storage) asyncio.create_task(circuit.run_forever()) await circuit.wait_init() assert td.get_state() == conf await circuit.shutdown() assert storage[td.key] == conf
def circuit(): """Return a new empty circuit.""" edzed.reset_circuit() return edzed.get_circuit()