예제 #1
0
    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)
예제 #2
0
 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)