def setup_class(self):
        self.eb = EventBus()
        hsmdata = {
            'initial': 0,
            'closed_enter': 0,
            'closed_exit': 0,
            'opened_enter': 0,
            'opened_exit': 0,
            'trans_opening': 0,
            'trans_closing': 0,
        }

        self.states = {
            'top': State({
                'closed': Closed(),
                'opened': Opened(),
            })
        }

        self.trans = {
            'top': {
                Initial: T('closed', action=get_callback('initial')),
            },
            'closed': {
                OpenDoor: T('opened', action=get_callback('trans_opening'))
            },
            'opened': {
                CloseDoor: T('closed', action=get_callback('trans_closing'))
            }
        }
        self.hsm = HSM(self.states, self.trans)
        self.hsm.data = hsmdata
    def setup_class(self):
        self.eb = EventBus()
        hsmdata = {
            'initial': 0,
            'start_enter': 0,
            'start_exit': 0,
            'goal_enter': 0,
            'goal_exit': 0,
            'trans_left': 0,
            'trans_right': 0,
            'trans_loop': 0,
            'trans_restart': 0,
        }

        self.start = Start()
        self.goal = Goal()

        self.states = {
            'top': State({
                'start': self.start,
                'goal': self.goal,
            })
        }
        self.trans = {
            'top': {
                Initial: T('start', action=get_callback('initial')),
            },
            'start': {
                MoveLeft: T('goal', action=get_callback('trans_left')),
                MoveRight: T('goal', action=get_callback('trans_right')),
            },
            'goal': {
                Loop: T('goal', action=get_callback('trans_loop')),
                Restart: T('top', action=get_callback('trans_restart')),
            }
        }
        self.hsm = HSM(self.states, self.trans)
        self.hsm.data = hsmdata
    def setup_class(self):
        hsmdata = {
            'top_internal_A': 0,
            'top_internal_B': 0,
            'top_internal_C': 0,
            'idle_internal_A': 0,
            'idle_internal_B': 0,
            'working_internal_A': 0,
            'working_internal_B': 0,
            'leaf_internal_A': 0,
        }

        states = {
            'top': State(states={
                'idle': State(),
                'working': State({
                    'leaf': State(),
                })
            })
        }

        trans = {
            'top': {
                Initial: T('idle'),
                A: Internal(action=get_callback('top_internal_A')),
                B: Internal(action=get_callback('top_internal_B')),
                C: Internal(action=get_callback('top_internal_C')),
            },
            'idle': {
                Step: T('leaf'),
                A: Internal(action=get_callback('idle_internal_A')),
                B: Internal(action=get_callback('idle_internal_B')),
            },
            'working': {
                Initial: T('leaf'),
                A: Internal(action=get_callback('working_internal_A')),
                B: Internal(action=get_callback('working_internal_B')),
            },
            'leaf': {
                A: Internal(action=get_callback('leaf_internal_A')),
            },
        }

        self.eb = EventBus()
        self.hsm = HSM(states, trans)
        self.hsm.data = hsmdata