File: Gen.hs

package info (click to toggle)
haskell-http-media 0.8.1.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 188 kB
  • sloc: haskell: 1,572; makefile: 5
file content (37 lines) | stat: -rw-r--r-- 1,027 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{-# LANGUAGE TupleSections #-}

-- | Contains definitions for generating 'Charset's.
module Network.HTTP.Media.Charset.Gen
  ( anything,
    genCharset,
    genConcreteCharset,
    genDiffCharset,
    genDiffConcreteCharsets,
  )
where

import Network.HTTP.Media.Charset.Internal
import Network.HTTP.Media.Gen (genDiffWith, genToken)
import Test.QuickCheck.Gen

-- | The Charset that matches anything.
anything :: Charset
anything = Charset "*"

-- | Generates any kind of Charset.
genCharset :: Gen Charset
genCharset = Charset <$> genToken

-- | Generates an Charset that does not match everything.
genConcreteCharset :: Gen Charset
genConcreteCharset = genDiffWith genCharset anything

-- | Generates a different Charset to the given one.
genDiffCharset :: Charset -> Gen Charset
genDiffCharset = genDiffWith genCharset

-- | Generates two different concrete Charsets.
genDiffConcreteCharsets :: Gen (Charset, Charset)
genDiffConcreteCharsets = do
  enc <- genConcreteCharset
  (enc,) <$> genDiffWith genConcreteCharset enc