Safe Haskell | None |
---|---|

Language | Haskell2010 |

## Synopsis

- tripping :: (MonadTest m, Applicative f, Show b, Show (f a), Eq (f a), HasCallStack) => a -> (a -> b) -> (b -> f a) -> m ()

# Documentation

tripping :: (MonadTest m, Applicative f, Show b, Show (f a), Eq (f a), HasCallStack) => a -> (a -> b) -> (b -> f a) -> m () Source #

Test that a pair of encode / decode functions are compatible.

Given a printer from some type `a -> b`

, and a parser with a
potential failure case `b -> f a`

. Ensure that a valid `a`

round
trips through the "print" and "parse" to yield the same `a`

.

For example, types *should* have tripping `Read`

and `Show`

instances:

trippingShowRead :: (Show a, Read a, Eq a, MonadTest m) => a -> m () trippingShowRead a = tripping a show readEither