Exemplo n.º 1
0
def play_game():

  print 'picking up'
  print session.get('state')
  # pick up wherever we left off
  adventure = AdventureMachine(state=session.get('state'))
  from_number = request.form.get('From')
  choice = request.form.get('Body', '').lower()

  adventure.on_transition = lambda x,y: twilio_output(from_number, y)

  # As the user progresses save their state
  def save_state(state):
    print 'changing state'
    print state
    session['state'] = state
  adventure.on_state_change = save_state

  if not choice or not len(adventure._states):
    adventure.play()
  else:
    try:
      adventure.transition_to(choice)
    except:
      twilio_output(from_number, 'Not a valid choice')
  return ''
Exemplo n.º 2
0
class AdventureTestCase(unittest.TestCase):

  def setUp(self):
    main.app.config['TESTING'] = True
    self.app = main.app.test_client()
    self.machine = AdventureMachine()
    self.machine.play() 

  def tearDown(self):
    pass

  def test_state_initial(self):
    self.assertEqual(self.machine.current_state.__name__, 'initial')

  def test_transition(self):
    output = self.machine.transition_to('craigslist')
    self.assertEqual(self.machine.current_state.__name__, 'craigslist')
    self.assertTrue(self.machine.visited(AdventureMachine.initial))

  def test_serial_killer(self):
    self.machine.transition_to('craigslist')
    self.machine.transition_to('initial')
    output = self.machine.transition_to('craigslist')
    idiot = "And now both of your kidneys are gone (seriously?)\na: Try again"
    self.assertEqual(output, [None, idiot])

  def test_reading_emails(self):
    self.machine.transition_to('emails')
    self.machine.transition_to('groveling_developer')
    self.machine.transition_to('emails')
    current_transitions = self.machine.current_state.transitions(self.machine)
    self.assertEqual(len(current_transitions.items()), 2)

  def test_mapping_letters(self):
    self.machine.transition_to('emails')
    self.machine.transition_to('b')
    self.machine.transition_to('a')
    self.machine.transition_to('b')
    self.assertEqual(self.machine.current_state.__name__, 'boss')

  def test_restart(self):
    self.machine.transition_to('emails')
    self.machine.transition_to('b')
    self.machine.transition_to('RESTART')
    self.assertEqual(self.machine.current_state.__name__, 'initial')

  def test_back(self):
    self.machine.transition_to('emails')
    self.machine.transition_to('b')
    self.machine.transition_to('BACK')
    self.assertEqual(self.machine.current_state.__name__, 'emails')