diff options
author | Joey Hess <joeyh@joeyh.name> | 2019-02-21 12:22:50 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2019-02-21 13:17:43 -0400 |
commit | 936aee6a60e86b5caa35675f0a50a58c173b9bbb (patch) | |
tree | c0eda4b1931b5e4e60bc88cfc8f6d20d5c791b1d /Types/UUID.hs | |
parent | 7c25cc77157b5d7b9a41096329c9a7e27dd5eafc (diff) |
quickcheck property for parsing of content identifier logs
Diffstat (limited to 'Types/UUID.hs')
-rw-r--r-- | Types/UUID.hs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Types/UUID.hs b/Types/UUID.hs index 3910f34481..61bfab06dd 100644 --- a/Types/UUID.hs +++ b/Types/UUID.hs @@ -14,10 +14,12 @@ import qualified Data.Map as M import qualified Data.UUID as U import Data.Maybe import Data.String +import Data.Char import Data.ByteString.Builder import qualified Data.Semigroup as Sem import Utility.FileSystemEncoding +import Utility.QuickCheck import qualified Utility.SimpleProtocol as Proto -- A UUID is either an arbitrary opaque string, or UUID info may be missing. @@ -81,3 +83,11 @@ type UUIDDescMap = M.Map UUID UUIDDesc instance Proto.Serializable UUID where serialize = fromUUID deserialize = Just . toUUID + +instance Arbitrary UUID where + arbitrary = frequency [(1, return NoUUID), (3, UUID <$> arb)] + where + -- Avoid non-ascii because fully arbitrary + -- strings may not be encoded using the filesystem + -- encoding, which is normally applied to all input. + arb = encodeBS <$> arbitrary `suchThat` all isAscii |