def test_information_state_state_set(): df = DialogueFlow('root', initial_speaker=Speaker.USER) transitions = { 'state': 'root', 'error': { 'state': 'one', 'okay': { 'state': 'two', 'error': { 'state': 'three', 'sure': 'root' } } }, 'something': { 'state': 'special', 'that is great': 'root' } } df.add_update_rule('[{read, watched}]', '#TRANSITION(special, 2.0)') df.load_transitions(transitions, speaker=Speaker.USER) df.user_turn('hi') assert df.system_turn() == 'okay' df.user_turn('i read a book') assert df.state() == 'special' assert df.system_turn() == 'that is great' assert df.state() == 'root'
def test_information_state_state_set(): df = DialogueFlow("root", initial_speaker=Speaker.USER) transitions = { "state": "root", "error": { "state": "one", "okay": {"state": "two", "error": {"state": "three", "sure": "root"}}, }, "something": {"state": "special", "that is great": "root"}, } df.add_update_rule("[{read, watched}]", "#TRANSITION(special, 2.0)") df.load_transitions(transitions, speaker=Speaker.USER) df.user_turn("hi") assert df.system_turn() == "okay" df.user_turn("i read a book") assert df.state() == "special" assert df.system_turn() == "that is great" assert df.state() == "root"
def test_information_state_based_dialogue(): df = DialogueFlow("root", initial_speaker=Speaker.USER) df.add_user_transition("root", "one", "$x=[{cat, dog}]") df.set_error_successor("root", "one") df.add_system_transition("one", "root", "i am a stupid state machine") df.add_update_rule("[$x={ice cream, candy}]") df.add_update_rule("#ANY($x=candy)", "$y=blah") df.add_update_rule("#ANY($x=ice cream)", "$y=None") df.add_update_rule("#ANY($y=blah)", "i am a smart info state manager (2.0)") df.user_turn("candy", debugging=True) assert df.system_turn().strip() == "i am a smart info state manager" df.user_turn("ice cream", debugging=True) assert df.system_turn(debugging=True).strip() == "i am a stupid state machine" df.user_turn("ice cream", debugging=True) assert df.system_turn(debugging=True).strip() == "i am a stupid state machine" df.user_turn("ice cream", debugging=True) assert df.system_turn(debugging=True).strip() == "i am a stupid state machine" df.user_turn("ice cream", debugging=True) assert df.system_turn(debugging=True).strip() == "i am a stupid state machine"
def test_information_state_based_dialogue(): df = DialogueFlow('root', initial_speaker=Speaker.USER) df.add_user_transition('root', 'one', '$x=[{cat, dog}]') df.set_error_successor('root', 'one') df.add_system_transition('one', 'root', 'i am a stupid state machine') df.add_update_rule('[$x={ice cream, candy}]') df.add_update_rule('#ANY($x=candy)', '$y=blah') df.add_update_rule('#ANY($x=ice cream)', '$y=None') df.add_update_rule('#ANY($y=blah)', 'i am a smart info state manager (2.0)') df.user_turn('candy', debugging=True) assert df.system_turn().strip() == 'i am a smart info state manager' df.user_turn('ice cream', debugging=True) assert df.system_turn(debugging=True).strip() == 'i am a stupid state machine' df.user_turn('ice cream', debugging=True) assert df.system_turn(debugging=True).strip() == 'i am a stupid state machine' df.user_turn('ice cream', debugging=True) assert df.system_turn(debugging=True).strip() == 'i am a stupid state machine' df.user_turn('ice cream', debugging=True) assert df.system_turn(debugging=True).strip() == 'i am a stupid state machine'