def test_add_chained_phrases(self): c = Context().add_chained_phrases(("0", 0), ("1", 1), ("2", 2), ("3", 3)) c.add_response("q", "q") # Walk through chain self.assertEqual(c.get_response("0")[0], 0) self.assertEqual(c.get_response("1")[0], 1) self.assertEqual(c.get_response("2")[0], 2) self.assertEqual(c.get_response("3")[0], 3) # Should be able to go back one step self.assertEqual(c.get_response("2")[0], 2) self.assertEqual(c.get_response("3")[0], 3) # Invalid input (no response) shouldn't exit the chain self.assertEqual(c.get_response("h")[0], NoResponse) self.assertEqual(c.get_response("3")[0], 3) # Exit chain with valid response from context.responses self.assertEqual(c.get_response("q")[0], "q") self.assertEqual(c.get_response("3")[0], NoResponse) # Make sure we can re-enter the chain self.assertEqual(c.get_response("0")[0], 0) self.assertEqual(c.get_response("1")[0], 1) self.assertEqual(c.get_response("2")[0], 2) self.assertEqual(c.get_response("3")[0], 3)
def test_add_responses(self): c1 = Context().add_responses(("abc+", 1), ("xyz*", 2)) self.assertEqual(c1.get_response("abc")[0], 1) self.assertEqual(c1.get_response("abcc")[0], 1) self.assertEqual(c1.get_response("abcccc")[0], 1) self.assertEqual(c1.get_response("xy")[0], 2) self.assertEqual(c1.get_response("xyz")[0], 2) self.assertEqual(c1.get_response("xyzzzz")[0], 2)