{-# OPTIONS_GHC -fno-warn-orphans #-} {-# LANGUAGE CPP #-} module Data.GenValidity.Aeson where #if !MIN_VERSION_base(4,8,0) import Data.Functor ((<$>)) #endif import Data.Foldable (toList) import Data.GenValidity import Data.GenValidity.HashMap () import Data.GenValidity.Scientific () import Data.GenValidity.Text () import Data.GenValidity.Vector () import Data.Validity.Aeson () import Data.Aeson import Test.QuickCheck instance GenUnchecked Value where genUnchecked = oneof [ Object <$> genUnchecked , Array <$> genUnchecked , String <$> genUnchecked , Number <$> genUnchecked , Bool <$> genUnchecked , pure Null ] shrinkUnchecked (Object hm) = (Object <$> shrinkUnchecked hm) ++ toList hm ++ concatMap shrinkUnchecked (toList hm) shrinkUnchecked (Array a) = (Array <$> shrinkUnchecked a) ++ toList a ++ concatMap shrinkUnchecked (toList a) shrinkUnchecked (String s) = String <$> shrinkUnchecked s shrinkUnchecked (Number s) = Number <$> shrinkUnchecked s shrinkUnchecked (Bool s) = Bool <$> shrinkUnchecked s shrinkUnchecked Null = [] instance GenValid Value where genValid = oneof [ Object <$> genValid , Array <$> genValid , String <$> genValid , Number <$> genValid , Bool <$> genValid , pure Null ] instance GenInvalid Value where genInvalid = oneof [Object <$> genInvalid, Array <$> genInvalid, String <$> genInvalid]