def state_machine(request): idle = State('Idle') a = State('A') b = State('B') idle.add_transition(Event('EVT1', 'Primer evento'), a) a.add_transition(Event('EVT2', 'Segundo evento'), b) sm = StateMachine(idle) return sm
def test_add_transiction_to_state(): initial_state = State('Idle') target = State('Target') event = Event('D1CL', 'Door closed') initial_state.add_transition(event, target) assert len(initial_state.transitions) == 1 assert initial_state.transitions[event.code] == target
def main(): number_of_task = 70 perf_log = [] for nb in range(1, 5): # Performance measure start = time.time() print("---------------- Run Beginning ----------------") print('number of process launched : ' + str(nb)) ep = EventProcessor() for i in range(number_of_task): event = Event.Event('test', 'test') ep.add_to_buffer(event) ep.run(nb) perf = time.time() - start print('Run ends in : ' + str(perf) + 's') perf_log.append(perf) print(perf_log) plt.plot(perf_log) plt.ylabel('Performance plot') plt.show() return True
def test_state_machine(): idle = State('idle') active = State('active') d1cl = Event('D1CL', 'Door 1 closed') idle.add_transition(d1cl, active) sm = StateMachine(idle) assert sm.start == sm.current_state == idle assert sm.all_states() == set([idle, active]) sm.handle('D1CL') assert sm.current_state == active
#!/usr/bin/env python2.7 from core import Dipole, DipolePack, World, Event import numpy as np from mayavi import mlab from tvtk.tools import visual Qel = 3e-7 d1 = Dipole(np.array([1e-2,1e-3,0.]),np.array([1e-2,0.,0.]),Qel,1e-2,1e-2) d2 = Dipole(np.array([0.,0.,0.]),np.array([-1e-3,0.,0.]),Qel,1e-2,1e-2) d3 = Dipole(np.array([-1e-2,2e-3,0.]),np.array([-1e-2,1e-3,0.]),Qel,1e-2,1e-2) d4 = Dipole(np.array([0.,2e-3,-2e-2]),np.array([0.,3e-3,-2e-2]),Qel,1e-2,1e-2) d5 = Dipole(np.array([0.,-2e-3,2e-2]),np.array([0.,-3e-3,2e-2]),Qel,1e-2,1e-2) d6 = Dipole(np.array([-1e-3,-4e-3,3e-2]),np.array([-1e-3,-3e-3,3e-2]),Qel,1e-2,1e-2) p1 = DipolePack(d1,d2,d3,d4) w1 = World(200,200,200) t = 10 # czas symulacji (zycie swiata) dt = 0.0001 # skok sym. e1 = Event( t, dt, p1, w1 ) e1.setoutput("output.dat") e1.run(True)
NaCl = [] # ilosc dipoli w wymiarze x = 4 y = 4 z = 4 #ilosc warstw t = d #translacja # 1:Na , 2:Cl for i in range(0,z+1): for j in range(0,y+1): for k in range(0,x+1): if i%2==0: if j%2 == 0: NaCl.append(Dipole( np.array([k*d*2+d+t,j*d*2+t,i*d*2+t]) , np.array([k*d*2+t,j*d*2+t,i*d*2+t]) , Q , mNa, mCl )) else: NaCl.append(Dipole( np.array([k*d*2+t,j*d*2+t,i*d*2+t]) , np.array([k*d*2+d+t,j*d*2+t,i*d*2+t]) , Q , mNa, mCl )) else: if j%2 == 0: NaCl.append(Dipole( np.array([k*d*2+t,j*d*2+t,i*d*2+t]) , np.array([k*d*2+d+t,j*d*2+t,i*d*2+t]) , Q , mNa, mCl )) else: NaCl.append(Dipole( np.array([k*d*2+d+t,j*d*2+t,i*d*2+t]) , np.array([k*d*2+t,j*d*2+t,i*d*2+t]) , Q , mNa, mCl )) p1 = DipolePack(*NaCl) w1 = World(200,200,200) time = 10 # czas symulacji (zycie swiata) dt = 0.0001 # skok sym. e1 = Event( time, dt, p1, w1 ) e1.setoutput("output.dat") e1.run() # True - wizulaizuje, False - bez wizyalizacji
def test_create_event(): e = Event('D1CL', 'Door closed') assert e.code == 'D1CL' assert e.name == 'Door closed'
def test_event_as_string(): e = Event('D1CL', 'Door closed') assert str(e) == 'D1CL : Door closed'
#!/usr/bin/env python # -*- coding: utf-8 -*- from core import State, Event, NetworkBus, StateMachine # States idle = State('idle', 'En espera') active = State('active', 'Activo') key1 = State('k1', 'keyboard key 1 pressed') key2 = State('k2', 'keyboard key 2 pressed') # Events door_closed = Event('D1CL', 'Door closed') key_one_pressed = Event('KEY1', 'Key 1 pressed') key_two_pressed = Event('KEY2', 'Key 2 pressed') open_batcave = Event('OPEN', 'Open batcave') # Transitions idle.add_transition(door_closed, active) active.add_transition(key_one_pressed, key1) key1.add_transition(key_two_pressed, key2) key2.add_action(open_batcave) key2.add_transition(open_batcave, idle) sm = StateMachine(idle) print('All states:', ', '.join([_.name for _ in sm.all_states()])) bus = NetworkBus() bus.subscribe(sm)
def add_event(self, event_name): return self.events.setdefault(event_name, Event(event_name))