def __init__(self, stateManager):
        super().__init__(stateManager)
        self.stateManager = stateManager

        # Set up the observer for session changes.
        observer = SessionObserver(stateManager)
        SessionManager.register(observer)
	def __init__(self,screen,leds,cardReader,emergencyStopButton,buzzer,relay):
		# Store the hardware.
		self.screen = screen
		self.leds = leds
		self.cardReader = cardReader
		self.emergencyStopButton = emergencyStopButton
		self.buzzer = buzzer
		self.relay = relay

		# Set up the observers.
		self.cardReader.register(CardReaderObserver(self))
		self.emergencyStopButton.register(EmergencyStopButtonObserver(self))
		StateManager.register(StateObserver(self))
		SessionManager.register(SessionObserver(self))
		MessageManager.register(MessageObserver(self))
		StateManager.staticStateManager.states["ToggleAccessType"].register(AccessTypeStateChanges(self))

		# Send the initial state for the e-stop.
		if self.emergencyStopButton.isPressed():
			StateManager.emergencyStopButtonPressed()
		else:
			StateManager.emergencyStopButtonReleased()

		# Set up the rest of the initial states.
		self.currentSession = None
		self.stateChanged(StateManager.getState())
		self.sessionChanged(None)
		self.messageChanged("")

		# Set up the timer threads.
		self.sessionTimerThread = SessionTimer(self)
		self.sessionTimerThread.start()
    def idSwiped(self, user):
        # Display an error if the user isn't authorized (session time is 0).
        if user.getSessionTime() <= 0:
            MessageManager.sendMessage(MessageManager.UNAUTHORIZED_MESSAGE)
            return

        # Start the session.
        SessionManager.startSession(user)
	def test_sessionExpires(self):
		CuT = SessionManager.SessionManager()

		# Create an observer.
		class SessionObserver(Observer.Observer):
			def notify(self, *args):
				self.observedSession = args[0]

			def getNotifiedSession(self):
				return self.observedSession

		observer = SessionObserver()
		CuT.register(observer)
		CuT.startSession(self.testUser1)
		CuT.getCurrentSession().sessionStart = 0
		self.assertEqual(CuT.getCurrentSession(),None,"Current session is incorrect.")
		self.assertEqual(observer.getNotifiedSession(),None,"Current session is incorrect.")
 def emergencyStopButtonPressed(self):
     SessionManager.endSession()
     self.stateManager.setStateByName("Stopped")
	def test_getCurrentSession(self):
		CuT = SessionManager.SessionManager()
		self.assertEqual(CuT.getCurrentSession(),None,"Initial session is incorrect.")
	def test_constructor(self):
		SessionManager.SessionManager()