51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
from src.service.dialog_state_monitor import DialogStateMonitor
|
|
from src.model.frame import Frame
|
|
from src.model.slot import Slot
|
|
|
|
dsm = DialogStateMonitor()
|
|
|
|
assert dsm.item_exists('pizza', 'capri') is True
|
|
assert dsm.item_exists('pizza', 'buraczana') is False
|
|
assert dsm.item_exists('drink', 'cola') is True
|
|
assert dsm.state['was_previous_order_invalid'] is False
|
|
|
|
assert dsm.get_current_active_stage() == 'collect_food'
|
|
frame1 = Frame('user', 'inform/order', [Slot('pizza', 'margarita'), Slot('sauce', 'ketchup')])
|
|
dsm.update(frame1)
|
|
assert dsm.get_current_active_stage() == 'collect_drinks'
|
|
assert dsm.get_total_cost() == 20
|
|
frame2 = Frame('user', 'inform/order', [Slot('pizza', 'tuna')])
|
|
dsm.update(frame2)
|
|
assert dsm.get_current_active_stage() == 'collect_drinks'
|
|
assert dsm.get_total_cost() == 20 # Pizza is not added, as previous stage is closed already
|
|
frame3 = Frame('user', 'inform/order-complete', [])
|
|
dsm.update(frame3)
|
|
frame4 = Frame('user', 'inform/order', [Slot('drink', 'cola')])
|
|
dsm.update(frame4)
|
|
assert dsm.get_current_active_stage() == 'collect_address'
|
|
assert dsm.get_total_cost() == 30
|
|
|
|
assert dsm.state['belief_state']['order'][0]['pizza'] == 'margarita'
|
|
assert dsm.state['belief_state']['order'][0]['sauce'] == 'ketchup'
|
|
assert dsm.state['belief_state']['order-complete'] is True
|
|
assert dsm.state['history'][0] == frame1
|
|
assert dsm.state['history'][1] == frame2
|
|
assert dsm.state['history'][2] == frame3
|
|
assert dsm.state['history'][3] == frame4
|
|
|
|
dsm.reset()
|
|
|
|
assert dsm.get_total_cost() == 0
|
|
assert dsm.get_current_active_stage() == 'collect_food'
|
|
assert dsm.state['belief_state']['order'] == []
|
|
assert dsm.state['belief_state']['order-complete'] is False
|
|
assert len(dsm.state['history']) == 0
|
|
|
|
dsm.reset()
|
|
|
|
frame1 = Frame('user', 'inform/order', [Slot('pizza', 'buraczana')])
|
|
dsm.update(frame1)
|
|
assert dsm.state['was_previous_order_invalid'] is True
|
|
assert dsm.state['belief_state']['order'] == []
|
|
assert dsm.get_total_cost() == 0
|