module Main where
import Test.Tasty
import qualified Test.Tasty.QuickCheck as QC
import Data.Typeable (typeOf, Typeable())
import Data.Word (Word8)
import Data.Char.Decode
main :: IO ()
main =
defaultMain $
localOption (QC.QuickCheckTests 10000) $
testGroup "Encodings"
[ testEncoding CodePage437
, testEncoding CodePage437Graphic
]
testEncoding
:: (ByteEncoding enc, Typeable enc)
=> enc -> TestTree
testEncoding enc = testGroup (show $ typeOf enc)
[ QC.testProperty "encode . decode" (_encode_decode enc)
]
_encode_decode
:: (ByteEncoding enc)
=> enc -> Word8 -> Bool
_encode_decode enc x =
(encodeByte enc $ decodeByte enc x) == (Right x)