Haskell: Как протестировать (реактивный) FSM с помощью quickcheck?

Я написал модуль конечного автомата состояния для небольшой футбольной игры, над которой я сейчас работаю. Он предоставляет интерфейс для настройки FSM (в основном его состояний и переходов). Для каждого состояния вы можете предоставить функции, которые будут запускаться при входе и выходе или пока FSM остается в том же состоянии, эти функции затем возвращают некоторые сообщения. Он также предоставляет реактивный интерфейс (Yampa), который выдает изменяющееся во времени состояние и собирает сообщения, возникающие с течением времени. Код находится здесь Data/FSM.hs.

Я ищу хороший подход для тестирования этого модуля. Поскольку он чистый, я подумал о том, чтобы попробовать использовать quickcheck. У меня нет опыта работы с quickcheck, поэтому любой совет будет оценен по достоинству! Мое основное понимание на данный момент: нужно предоставить несколько функций, которые строят FSM более или менее случайным образом, а затем запускают некоторые (опять же более или менее случайные) переходы на них. Но я не могу понять, как построить тест таким образом...

7
задан martingw 25 December 2016 в 22:58
поделиться