ClassLaws-0.3.1.0: src/Text/Show/Laws.hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE EmptyDataDecls #-}
module Text.Show.Laws where
import Test.ClassLaws
import Test.ClassLaws.TestingDatatypes
data ShowLaw s
class Show s => ShowLaws s where
showLaw :: Law (ShowLaw s)
showLaw = defaultShowLaw
defaultShowLaw (d,x,r,s) = showsPrec d x r ++ s =.= showsPrec d x (r ++ s)
type instance LawArgs (ShowLaw s) = (Int, s, String, String)
type instance LawBody (ShowLaw s) = String
instance (ShowLaws s) => LawTest (ShowLaw s) where
lawtest _ = testEqual . showLaw