Module Test.StateMachine.Labelling defines
data Event model cmd resp (r :: Type -> Type) = Event
{ eventBefore :: model r
, eventCmd :: cmd r
, eventAfter :: model r
, eventResp :: resp r
}
deriving stock Show
While this is not wrong in that module, it is misleading and rather dangerous. This type is based on,and almost equal to the one I define in my blog post, but not quite. Compare to the Event type defined in Test.StateMachine.Lockstep.NAry:
data Event t r = Event {
before :: Model t r
, cmd :: Cmd t :@ r
, after :: Model t r
, mockResp :: Resp t (MockHandle t) (RealHandles t)
}
This records the mock response, not the real one. This is critical: if this records the real response, and then the rest of my blog post is used as is, then the postcondition becomes trivial, comparing the real response to itself.
Module
Test.StateMachine.LabellingdefinesWhile this is not wrong in that module, it is misleading and rather dangerous. This type is based on,and almost equal to the one I define in my blog post, but not quite. Compare to the
Eventtype defined inTest.StateMachine.Lockstep.NAry:This records the mock response, not the real one. This is critical: if this records the real response, and then the rest of my blog post is used as is, then the
postconditionbecomes trivial, comparing the real response to itself.