packages feed

buffer-builder-aeson 0.2.0.0 → 0.2.0.3

raw patch · 2 files changed

+70/−3 lines, 2 filesdep ~buffer-builderPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: buffer-builder

API changes (from Hackage documentation)

Files

buffer-builder-aeson.cabal view
@@ -2,7 +2,7 @@ --  documentation, see http://haskell.org/cabal/users-guide/  name:                buffer-builder-aeson-version:             0.2.0.0+version:             0.2.0.3 synopsis:            Serialize Aeson values with Data.BufferBuilder description: @@ -40,11 +40,12 @@ build-type:          Simple -- extra-source-files:   cabal-version:       >=1.10+extra-source-files:  test/*.hs bench/*.hs  source-repository this   type:     git   location: https://github.com/andyfriesen/buffer-builder-aeson-  tag:      0.2.0.0+  tag:      0.2.0.3  library   exposed-modules:     Data.BufferBuilder.Aeson@@ -57,7 +58,7 @@   build-depends:       base >=4.6 && <4.8                      , aeson                      , integer-gmp-                     , buffer-builder >=0.2.0.0+                     , buffer-builder >=0.2.0.3                      , unordered-containers                      , vector                      , scientific
+ test/AesonQuickCheck.hs view
@@ -0,0 +1,66 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}++module AesonQuickCheck where++import Data.Aeson+import Test.QuickCheck+import           Data.Text (Text)+import qualified Data.Text as T+import qualified Data.Vector as V+import           Data.HashMap.Strict (HashMap)+import qualified Data.HashMap.Strict as HashMap+import Data.Scientific+import Data.Hashable (Hashable)+import Control.Applicative+++newtype ArbObject = ArbObject { unArbObject :: Object }++-- bleh hack+instance Arbitrary Text where+    arbitrary = fmap T.pack $ arbitrary+    shrink txt = fmap T.pack $ shrink $ T.unpack txt++arbitraryArray :: (Arbitrary a) => Gen [a]+arbitraryArray = sized $ \s -> do+    (Positive len) <- arbitrary+    vector $ min s (len `mod` 10)++arbitraryObject :: (Hashable k, Eq k, Arbitrary k, Arbitrary v) => Gen (HashMap k v)+arbitraryObject = fmap HashMap.fromList arbitraryArray++shrinkHashMap hashMap = fmap HashMap.fromList (shrink (HashMap.toList hashMap))++instance Arbitrary ArbObject where+    arbitrary = sized $ \s -> let s' = max 1 (s `div` 10) in+        ArbObject <$> resize s' arbitraryObject++instance Arbitrary Value where+    arbitrary = sized $ \s -> let s' = max 1 (s - 1) in seq s' $ resize s' $ oneof+        [ Object . unArbObject <$> arbitrary+        , Array . V.fromList <$> arbitraryArray+        , String <$> arbitrary+        , Number <$> arbitrary+        , Bool   <$> arbitrary+        , return Null+        ]++    shrink e = case e of+        Object x -> Object <$> shrinkHashMap x+        Array x  -> Array <$> shrink x+        String _ -> []+        Number _ -> []+        Bool _   -> []+        Null     -> []++instance Arbitrary Scientific where+    arbitrary = do+        val <- arbitrary :: Gen Int+        return $ scientific (fromIntegral val) 1+    shrink val = do+        val' <- shrink (floor val)+        return $ scientific val' 0++instance Arbitrary a => Arbitrary (V.Vector a) where+    arbitrary = V.fromList <$> arbitrary+    shrink = fmap V.fromList . shrink . V.toList