ocalMinFound :: S.State -> P.Result -> IO (Int, Int, Int)
localMinFound st res =
  do let report = concat [
           "(after " ++ number (S.numSuccessTests st+1) "test",
           concat [ " and " ++ number (S.numSuccessShrinks st) "shrink"
                  | S.numSuccessShrinks st > 0
                  ],
           "): "
           ]
     if isOneLine (P.reason res)
       then putLine (S.terminal st) (P.reason res ++ " " ++ report)
       else do
         putLine (S.terminal st) report
         sequence_
           [ putLine (S.terminal st) msg
           | msg <- lines (P.reason res)
           ]
     putLine (S.terminal st) "*** Non SmartChecked arguments:"

     callbackPostFinalFailure st res
     return (S.numSuccessShrinks st, S.numTotTryShrinks st - S.numTryShrinks st, S.numTryShrinks st)

--------------------------------------------------------------------------
-- callbacks

localMinFound :: S.State -> P.Result -> IO (Int, Int, Int)
localMinFound st res =
  do let report = concat [
           "(after " ++ number (S.numSuccessTests st+1) "test",
           concat [ " and " ++ number (S.numSuccessShrinks st) "shrink"
                  | S.numSuccessShrinks st > 0
                  ],
           "): "
           ]
     if isOneLine (P.reason res)
       then putLine (S.terminal st) (P.reason res ++ " " ++ report)
       else do
         putLine (S.terminal st) report
         sequence_
           [ putLine (S.terminal st) msg
           | msg <- lines (P.reason res)
           ]
     putLine (S.terminal st) "*** Non SmartChecked arguments:"

     callbackPostFinalFailure st res
     return (S.numSuccessShrinks st, S.numTotTryShrinks st - S.numTryShrinks st, S.numTryShrinks st)

--------------------------------------------------------------------------
-- callbacks
localMinFound st res =
  do let report = concat [
           "(after " ++ number (S.numSuccessTests st+1) "test",
           concat [ " and " ++ number (S.numSuccessShrinks st) "shrink"
                  | S.numSuccessShrinks st > 0
                  ],
           "): "
           ]
     if isOneLine (P.reason res)
       then putLine (S.terminal st) (P.reason res ++ " " ++ report)
       else do
         putLine (S.terminal st) report
         sequence_
           [ putLine (S.terminal st) msg
           | msg <- lines (P.reason res)
           ]
     putLine (S.terminal st) "*** Non SmartChecked arguments:"

     callbackPostFinalFailure st res
     return (S.numSuccessShrinks st, S.numTotTryShrinks st - S.numTryShrinks st, S.numTryShrinks st)

--------------------------------------------------------------------------
-- callbacks