msgpack-1.0.0: test/test.hs
{-# LANGUAGE ScopedTypeVariables #-}
module Main (main) where
import Control.Applicative
import qualified Data.ByteString.Char8 as S
import qualified Data.ByteString.Lazy.Char8 as L
import Data.Maybe
import Data.MessagePack
import Test.QuickCheck
import Test.Tasty
import Test.Tasty.QuickCheck
main :: IO ()
main = defaultMain tests
instance Arbitrary a => Arbitrary (Assoc a) where
arbitrary = Assoc <$> arbitrary
instance Arbitrary S.ByteString where
arbitrary = S.pack <$> arbitrary
instance Arbitrary L.ByteString where
arbitrary = L.pack <$> arbitrary
mid :: MessagePack a => a -> a
mid = fromJust . unpack . pack
tests :: TestTree
tests =
testGroup "Identity Properties"
[ testProperty "int" $
\(a :: Int) -> a == mid a
, testProperty "nil" $
\(a :: ()) -> a == mid a
, testProperty "bool" $
\(a :: Bool) -> a == mid a
, testProperty "double" $
\(a :: Double) -> a == mid a
, testProperty "string" $
\(a :: String) -> a == mid a
, testProperty "bytestring" $
\(a :: S.ByteString) -> a == mid a
, testProperty "lazy-bytestring" $
\(a :: L.ByteString) -> a == mid a
, testProperty "[int]" $
\(a :: [Int]) -> a == mid a
, testProperty "[string]" $
\(a :: [String]) -> a == mid a
, testProperty "(int, int)" $
\(a :: (Int, Int)) -> a == mid a
, testProperty "(int, int, int)" $
\(a :: (Int, Int, Int)) -> a == mid a
, testProperty "(int, int, int, int)" $
\(a :: (Int, Int, Int, Int)) -> a == mid a
, testProperty "(int, int, int, int, int)" $
\(a :: (Int, Int, Int, Int, Int)) -> a == mid a
, testProperty "[(int, double)]" $
\(a :: [(Int, Double)]) -> a == mid a
, testProperty "[(string, string)]" $
\(a :: [(String, String)]) -> a == mid a
, testProperty "Assoc [(string, int)]" $
\(a :: Assoc [(String, Int)]) -> a == mid a
]