msgpack-types 0.3.1 → 0.3.2
raw patch · 11 files changed
+144/−104 lines, 11 filesdep +quickcheck-instances
Dependencies added: quickcheck-instances
Files
- msgpack-types.cabal +5/−3
- src/Data/MessagePack/Tags.hs +38/−0
- src/Data/MessagePack/Types/Assoc.hs +2/−7
- src/Data/MessagePack/Types/Class.hs +2/−3
- src/Data/MessagePack/Types/Generic.hs +0/−2
- src/Data/MessagePack/Types/Object.hs +8/−10
- test/Data/MessagePack/Arbitrary.hs +0/−28
- test/Data/MessagePack/TagsSpec.hs +16/−0
- test/Data/MessagePack/Types/AssocSpec.hs +6/−3
- test/Data/MessagePack/Types/ClassSpec.hs +34/−48
- test/Test/QuickCheck/Instances/MessagePack.hs +33/−0
msgpack-types.cabal view
@@ -1,5 +1,5 @@ name: msgpack-types-version: 0.3.1+version: 0.3.2 synopsis: A Haskell implementation of MessagePack. homepage: http://msgpack.org/ license: BSD3@@ -30,6 +30,7 @@ -Wall -fno-warn-unused-imports exposed-modules:+ Data.MessagePack.Tags Data.MessagePack.Types other-modules: Data.MessagePack.Types.Assoc@@ -39,7 +40,6 @@ Data.MessagePack.Types.Object build-depends: base < 5- , QuickCheck , bytestring , containers , deepseq@@ -56,9 +56,10 @@ hs-source-dirs: test main-is: testsuite.hs other-modules:- Data.MessagePack.Arbitrary+ Data.MessagePack.TagsSpec Data.MessagePack.Types.AssocSpec Data.MessagePack.Types.ClassSpec+ Test.QuickCheck.Instances.MessagePack ghc-options: -Wall -fno-warn-unused-imports@@ -75,6 +76,7 @@ , hspec , monad-validate , msgpack-types+ , quickcheck-instances , text , unordered-containers , vector
+ src/Data/MessagePack/Tags.hs view
@@ -0,0 +1,38 @@+-- Generated file - DO NOT EDIT+-- To regenerate, run:+-- tools/gen-tags > src/Data/MessagePack/Tags.hs+{-# LANGUAGE PatternSynonyms #-}+{-# OPTIONS_GHC -Wno-missing-pattern-synonym-signatures #-}+module Data.MessagePack.Tags where++pattern TAG_nil = 0xc0 -- 11000000+pattern TAG_false = 0xc2 -- 11000010+pattern TAG_true = 0xc3 -- 11000011+pattern TAG_bin_8 = 0xc4 -- 11000100+pattern TAG_bin_16 = 0xc5 -- 11000101+pattern TAG_bin_32 = 0xc6 -- 11000110+pattern TAG_ext_8 = 0xc7 -- 11000111+pattern TAG_ext_16 = 0xc8 -- 11001000+pattern TAG_ext_32 = 0xc9 -- 11001001+pattern TAG_float_32 = 0xca -- 11001010+pattern TAG_float_64 = 0xcb -- 11001011+pattern TAG_uint_8 = 0xcc -- 11001100+pattern TAG_uint_16 = 0xcd -- 11001101+pattern TAG_uint_32 = 0xce -- 11001110+pattern TAG_uint_64 = 0xcf -- 11001111+pattern TAG_int_8 = 0xd0 -- 11010000+pattern TAG_int_16 = 0xd1 -- 11010001+pattern TAG_int_32 = 0xd2 -- 11010010+pattern TAG_int_64 = 0xd3 -- 11010011+pattern TAG_fixext_1 = 0xd4 -- 11010100+pattern TAG_fixext_2 = 0xd5 -- 11010101+pattern TAG_fixext_4 = 0xd6 -- 11010110+pattern TAG_fixext_8 = 0xd7 -- 11010111+pattern TAG_fixext_16 = 0xd8 -- 11011000+pattern TAG_str_8 = 0xd9 -- 11011001+pattern TAG_str_16 = 0xda -- 11011010+pattern TAG_str_32 = 0xdb -- 11011011+pattern TAG_array_16 = 0xdc -- 11011100+pattern TAG_array_32 = 0xdd -- 11011101+pattern TAG_map_16 = 0xde -- 11011110+pattern TAG_map_32 = 0xdf -- 11011111
src/Data/MessagePack/Types/Assoc.hs view
@@ -21,10 +21,8 @@ ( Assoc (..) ) where -import Control.Applicative ((<$>))-import Control.DeepSeq (NFData)-import Data.Typeable (Typeable)-import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)+import Control.DeepSeq (NFData)+import Data.Typeable (Typeable) -- not defined for general Functor for performance reason. -- (ie. you would want to write custom instances for each type using@@ -32,6 +30,3 @@ newtype Assoc a = Assoc { unAssoc :: a } deriving (Show, Read, Eq, Ord, Typeable, NFData)--instance Arbitrary a => Arbitrary (Assoc a) where- arbitrary = Assoc <$> arbitrary
src/Data/MessagePack/Types/Class.hs view
@@ -30,7 +30,6 @@ , defaultConfig ) where -import Control.Applicative (Applicative, (<$>), (<*>)) import Control.Arrow ((***)) import Control.Monad.Validate (MonadValidate (..)) import qualified Data.ByteString as S@@ -45,8 +44,8 @@ import qualified Data.Vector as V import qualified Data.Vector.Storable as VS import qualified Data.Vector.Unboxed as VU-import Data.Word (Word, Word16, Word32,- Word64, Word8)+import Data.Word (Word16, Word32, Word64,+ Word8) import GHC.Generics (Generic, Rep, from, to) import Data.MessagePack.Types.Assoc (Assoc (..))
src/Data/MessagePack/Types/Generic.hs view
@@ -14,8 +14,6 @@ {-# LANGUAGE UndecidableInstances #-} module Data.MessagePack.Types.Generic () where -import Control.Applicative (Applicative, (<$>), (<*>))-import Control.Monad ((>=>)) import Control.Monad.Trans.State.Strict (StateT, evalStateT, get, put) import Control.Monad.Validate (MonadValidate, refute)
src/Data/MessagePack/Types/Object.hs view
@@ -1,4 +1,3 @@-{-# OPTIONS_GHC -fno-warn-orphans #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-}@@ -7,15 +6,14 @@ ( Object (..) ) where -import Control.Applicative ((<$>), (<*>))-import Control.DeepSeq (NFData (..))-import qualified Data.ByteString as S-import Data.Int (Int64)-import qualified Data.Text as T-import Data.Typeable (Typeable)-import qualified Data.Vector as V-import Data.Word (Word64, Word8)-import GHC.Generics (Generic)+import Control.DeepSeq (NFData (..))+import qualified Data.ByteString as S+import Data.Int (Int64)+import qualified Data.Text as T+import Data.Typeable (Typeable)+import qualified Data.Vector as V+import Data.Word (Word64, Word8)+import GHC.Generics (Generic) -- | Object Representation of MessagePack data.
− test/Data/MessagePack/Arbitrary.hs
@@ -1,28 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# LANGUAGE StrictData #-}-{-# LANGUAGE Trustworthy #-}-module Data.MessagePack.Arbitrary () where--import qualified Data.ByteString as S-import Data.MessagePack.Types (Object (..))-import qualified Data.Text as T-import qualified Data.Vector as V-import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)-import qualified Test.QuickCheck.Gen as Gen---instance Arbitrary Object where- arbitrary = Gen.sized $ \n -> Gen.oneof- [ pure ObjectNil- , ObjectBool <$> arbitrary- , ObjectInt <$> negatives- , ObjectWord <$> arbitrary- , ObjectFloat <$> arbitrary- , ObjectDouble <$> arbitrary- , ObjectStr <$> (T.pack <$> arbitrary)- , ObjectBin <$> (S.pack <$> arbitrary)- , ObjectArray <$> (V.fromList <$> Gen.resize (n `div` 2) arbitrary)- , ObjectMap <$> (V.fromList <$> Gen.resize (n `div` 4) arbitrary)- , ObjectExt <$> arbitrary <*> (S.pack <$> arbitrary)- ]- where negatives = Gen.choose (minBound, -1)
+ test/Data/MessagePack/TagsSpec.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE LambdaCase #-}+module Data.MessagePack.TagsSpec where++import Data.MessagePack.Tags+import Test.Hspec (Spec, describe, it, shouldSatisfy)++spec :: Spec+spec =+ describe "Assoc" $+ it "has a working Read/Show implementation" $ do+ (TAG_nil :: Int) `shouldSatisfy` \case+ TAG_nil -> True+ _ -> False+ (TAG_nil :: Integer) `shouldSatisfy` \case+ TAG_nil -> True+ _ -> False
test/Data/MessagePack/Types/AssocSpec.hs view
@@ -2,9 +2,12 @@ {-# LANGUAGE Trustworthy #-} module Data.MessagePack.Types.AssocSpec where -import Data.MessagePack.Types (Assoc (..))-import Test.Hspec (Spec, describe, it, shouldBe)-import Test.QuickCheck (Arbitrary (..), property)+import Data.MessagePack.Types (Assoc (..))+import Test.Hspec (Spec, describe, it,+ shouldBe)+import Test.QuickCheck (Arbitrary (..),+ property)+import Test.QuickCheck.Instances.MessagePack () spec :: Spec spec =
test/Data/MessagePack/Types/ClassSpec.hs view
@@ -7,37 +7,40 @@ {-# LANGUAGE Trustworthy #-} module Data.MessagePack.Types.ClassSpec where -import Control.Applicative (empty, pure, (<$>), (<*>),- (<|>))-import Control.Monad (mplus, mzero)-import Control.Monad.Validate (MonadValidate (..),- runValidate)-import qualified Data.ByteString as BS-import qualified Data.ByteString.Lazy as LBS-import qualified Data.HashMap.Strict as HashMap-import Data.Hashable (Hashable)-import Data.Int (Int16, Int32, Int64, Int8)-import qualified Data.IntMap.Strict as IntMap-import qualified Data.Map as Map-import Data.MessagePack.Arbitrary ()-import Data.MessagePack.Types (Assoc (..),- MessagePack (..),- Object (..), defaultConfig,- errorMessages)-import qualified Data.Text as Text-import qualified Data.Text.Lazy as LText-import qualified Data.Vector as V-import qualified Data.Vector.Storable as VS-import qualified Data.Vector.Unboxed as VU-import Data.Word (Word, Word16, Word32,- Word64, Word8)-import GHC.Generics (Generic)-import Test.Hspec (Spec, describe, it,- shouldBe, shouldSatisfy)-import Test.QuickCheck (Arbitrary (..),- genericShrink, property,- withMaxSuccess)-import Test.QuickCheck.Arbitrary.Generic (genericArbitrary)+import Control.Applicative (empty, pure, (<$>),+ (<*>), (<|>))+import Control.Monad (mplus, mzero)+import Control.Monad.Validate (MonadValidate (..),+ runValidate)+import qualified Data.ByteString as BS+import qualified Data.ByteString.Lazy as LBS+import qualified Data.HashMap.Strict as HashMap+import Data.Hashable (Hashable)+import Data.Int (Int16, Int32, Int64,+ Int8)+import qualified Data.IntMap.Strict as IntMap+import qualified Data.Map as Map+import Data.MessagePack.Types (Assoc (..),+ MessagePack (..),+ Object (..),+ defaultConfig,+ errorMessages)+import qualified Data.Text as Text+import qualified Data.Text.Lazy as LText+import qualified Data.Vector as V+import qualified Data.Vector.Storable as VS+import qualified Data.Vector.Unboxed as VU+import Data.Word (Word, Word16, Word32,+ Word64, Word8)+import GHC.Generics (Generic)+import Test.Hspec (Spec, describe, it,+ shouldBe, shouldSatisfy)+import Test.QuickCheck (Arbitrary (..),+ genericShrink, property,+ withMaxSuccess)+import Test.QuickCheck.Arbitrary.Generic (genericArbitrary)+import Test.QuickCheck.Instances ()+import Test.QuickCheck.Instances.MessagePack () data MyType = SequenceTyCon Int String Int Int@@ -81,23 +84,6 @@ instance Arbitrary MyType where arbitrary = genericArbitrary shrink = genericShrink--instance Arbitrary BS.ByteString where- arbitrary = BS.pack . take 10 <$> arbitrary-instance Arbitrary LBS.ByteString where- arbitrary = LBS.pack . take 10 <$> arbitrary-instance Arbitrary Text.Text where- arbitrary = Text.pack . take 10 <$> arbitrary-instance Arbitrary LText.Text where- arbitrary = LText.pack . take 10 <$> arbitrary-instance Arbitrary a => Arbitrary (V.Vector a) where- arbitrary = V.fromList <$> arbitrary-instance (Arbitrary a, VS.Storable a) => Arbitrary (VS.Vector a) where- arbitrary = VS.fromList <$> arbitrary-instance (Arbitrary a, VU.Unbox a) => Arbitrary (VU.Vector a) where- arbitrary = VU.fromList <$> arbitrary-instance (Arbitrary a, Hashable a, Eq a, Arbitrary b) => Arbitrary (HashMap.HashMap a b) where- arbitrary = HashMap.fromList <$> arbitrary type Result a = Either [String] a
+ test/Test/QuickCheck/Instances/MessagePack.hs view
@@ -0,0 +1,33 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE Trustworthy #-}+module Test.QuickCheck.Instances.MessagePack () where++import qualified Data.ByteString as S+import Data.MessagePack.Types (Assoc (..), Object (..))+import qualified Data.Text as T+import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)+import qualified Test.QuickCheck.Gen as Gen+import Test.QuickCheck.Instances.ByteString ()+import Test.QuickCheck.Instances.Vector ()+++instance Arbitrary Object where+ arbitrary = Gen.sized $ \n -> Gen.oneof+ [ pure ObjectNil+ , ObjectBool <$> arbitrary+ , ObjectInt <$> negatives+ , ObjectWord <$> arbitrary+ , ObjectFloat <$> arbitrary+ , ObjectDouble <$> arbitrary+ , ObjectStr <$> (T.pack <$> arbitrary)+ , ObjectBin <$> (S.pack <$> arbitrary)+ , ObjectArray <$> Gen.resize (n `div` 2) arbitrary+ , ObjectMap <$> Gen.resize (n `div` 4) arbitrary+ , ObjectExt <$> arbitrary <*> arbitrary+ ]+ where negatives = Gen.choose (minBound, -1)+++instance Arbitrary a => Arbitrary (Assoc a) where+ arbitrary = Assoc <$> arbitrary