1Name: QuickCheck
2Version: 2.14.1
3x-revision: 2
4Cabal-Version: >= 1.10
5Build-type: Simple
6License: BSD3
7License-file: LICENSE
8Copyright: 2000-2019 Koen Claessen, 2006-2008 Björn Bringert, 2009-2019 Nick Smallbone
9Author: Koen Claessen <koen@chalmers.se>
10Maintainer: Nick Smallbone <nick@smallbone.se>
11Bug-reports: https://github.com/nick8325/quickcheck/issues
12Tested-with: GHC ==7.0.4 || ==7.2.2 || >= 7.4
13Homepage: https://github.com/nick8325/quickcheck
14Category:       Testing
15Synopsis:       Automatic testing of Haskell programs
16Description:
17  QuickCheck is a library for random testing of program properties.
18  The programmer provides a specification of the program, in the form of
19  properties which functions should satisfy, and QuickCheck then tests that the
20  properties hold in a large number of randomly generated cases.
21  Specifications are expressed in Haskell, using combinators provided by
22  QuickCheck. QuickCheck provides combinators to define properties, observe the
23  distribution of test data, and define test data generators.
24  .
25  Most of QuickCheck's functionality is exported by the main "Test.QuickCheck"
26  module. The main exception is the monadic property testing library in
27  "Test.QuickCheck.Monadic".
28  .
29  If you are new to QuickCheck, you can try looking at the following resources:
30  .
31  * The <http://www.cse.chalmers.se/~rjmh/QuickCheck/manual.html official QuickCheck manual>.
32    It's a bit out-of-date in some details and doesn't cover newer QuickCheck features,
33    but is still full of good advice.
34  * <https://begriffs.com/posts/2017-01-14-design-use-quickcheck.html>,
35    a detailed tutorial written by a user of QuickCheck.
36  .
37  The <https://hackage.haskell.org/package/quickcheck-instances quickcheck-instances>
38  companion package provides instances for types in Haskell Platform packages
39  at the cost of additional dependencies.
40
41extra-source-files:
42  README
43  changelog
44  examples/Heap.hs
45  examples/Heap_Program.hs
46  examples/Heap_ProgramAlgebraic.hs
47  examples/Lambda.hs
48  examples/Merge.hs
49  examples/Set.hs
50  examples/Simple.hs
51  make-hugs
52  test-hugs
53
54source-repository head
55  type:     git
56  location: https://github.com/nick8325/quickcheck
57
58source-repository this
59  type:     git
60  location: https://github.com/nick8325/quickcheck
61  tag:      2.14.1
62
63flag templateHaskell
64  Description: Build Test.QuickCheck.All, which uses Template Haskell.
65  Default: True
66
67flag old-random
68  Description: Build against a pre-1.2.0 version of the random package.
69  Default: False
70
71library
72  Hs-source-dirs: src
73  Build-depends: base >=4.3 && <4.15, containers
74  Default-language: Haskell2010
75
76  -- New vs old random.
77  if flag(old-random)
78    Build-depends: random >= 1.0.0.3 && < 1.2.0
79    cpp-options: -DOLD_RANDOM
80  else
81    Build-depends: random >= 1.2.0 && < 1.3
82
83  -- We always use splitmix directly rather than going through StdGen
84  -- (it's somewhat more efficient).
85  -- However, Hugs traps overflow on Word64, so we have to stick
86  -- with StdGen there.
87  if impl(hugs)
88    cpp-options: -DNO_SPLITMIX
89  else
90    Build-depends: splitmix >= 0.1 && <0.2
91
92  -- Modules that are always built.
93  Exposed-Modules:
94    Test.QuickCheck,
95    Test.QuickCheck.Arbitrary,
96    Test.QuickCheck.Gen,
97    Test.QuickCheck.Gen.Unsafe,
98    Test.QuickCheck.Monadic,
99    Test.QuickCheck.Modifiers,
100    Test.QuickCheck.Property,
101    Test.QuickCheck.Test,
102    Test.QuickCheck.Text,
103    Test.QuickCheck.Poly,
104    Test.QuickCheck.State,
105    Test.QuickCheck.Random,
106    Test.QuickCheck.Exception,
107    Test.QuickCheck.Features
108
109  -- GHC-specific modules.
110  if impl(ghc)
111    Exposed-Modules: Test.QuickCheck.Function
112    Build-depends: transformers >= 0.3, deepseq >= 1.1.0.0
113  else
114    cpp-options: -DNO_TRANSFORMERS -DNO_DEEPSEQ
115
116  if impl(ghc) && flag(templateHaskell)
117    Build-depends: template-haskell >= 2.4 && <2.17
118    Other-Extensions: TemplateHaskell
119    Exposed-Modules: Test.QuickCheck.All
120  else
121    cpp-options: -DNO_TEMPLATE_HASKELL
122
123  if !impl(ghc >= 7.4)
124    cpp-options: -DNO_CTYPES_CONSTRUCTORS -DNO_FOREIGN_C_USECONDS
125
126  -- The new generics appeared in GHC 7.2...
127  if impl(ghc < 7.2)
128    cpp-options: -DNO_GENERICS
129  -- ...but in 7.2-7.4 it lives in the ghc-prim package.
130  if impl(ghc >= 7.2) && impl(ghc < 7.6)
131    Build-depends: ghc-prim
132
133  -- Safe Haskell appeared in GHC 7.2, but GHC.Generics isn't safe until 7.4.
134  if impl (ghc < 7.4)
135    cpp-options: -DNO_SAFE_HASKELL
136
137  -- random is explicitly Trustworthy since 1.0.1.0
138  -- similar constraint for containers
139  if impl(ghc >= 7.2)
140    Build-depends: random >=1.0.1.0
141  if impl(ghc >= 7.4)
142    Build-depends: containers >=0.4.2.1
143
144  if !impl(ghc >= 7.6)
145      cpp-options: -DNO_POLYKINDS
146
147  if !impl(ghc >= 8.0)
148    cpp-options: -DNO_MONADFAIL
149
150  -- Switch off most optional features on non-GHC systems.
151  if !impl(ghc)
152    -- If your Haskell compiler can cope without some of these, please
153    -- send a message to the QuickCheck mailing list!
154    cpp-options: -DNO_TIMEOUT -DNO_NEWTYPE_DERIVING -DNO_GENERICS
155      -DNO_TEMPLATE_HASKELL -DNO_SAFE_HASKELL -DNO_TYPEABLE -DNO_GADTS
156      -DNO_EXTRA_METHODS_IN_APPLICATIVE -DOLD_RANDOM
157    if !impl(hugs) && !impl(uhc)
158      cpp-options: -DNO_ST_MONAD -DNO_MULTI_PARAM_TYPE_CLASSES
159
160  -- LANGUAGE pragmas don't have any effect in Hugs.
161  if impl(hugs)
162    Default-Extensions: CPP
163
164  if impl(uhc)
165    -- Cabal under UHC needs pointing out all the dependencies of the
166    -- random package.
167    Build-depends: old-time, old-locale
168    -- Plus some bits of the standard library are missing.
169    cpp-options: -DNO_FIXED -DNO_EXCEPTIONS
170
171Test-Suite test-quickcheck
172    type: exitcode-stdio-1.0
173    Default-language: Haskell2010
174    hs-source-dirs:
175        examples
176    main-is: Heap.hs
177    build-depends: base, QuickCheck
178    if !flag(templateHaskell)
179        Buildable: False
180
181Test-Suite test-quickcheck-gcoarbitrary
182    type: exitcode-stdio-1.0
183    Default-language: Haskell2010
184    hs-source-dirs: tests
185    main-is: GCoArbitraryExample.hs
186    build-depends: base, QuickCheck
187    if !flag(templateHaskell) || !impl(ghc >= 7.2)
188        buildable: False
189    if impl(ghc >= 7.2) && impl(ghc < 7.6)
190        build-depends: ghc-prim
191
192Test-Suite test-quickcheck-generators
193    type: exitcode-stdio-1.0
194    Default-language: Haskell2010
195    hs-source-dirs: tests
196    main-is: Generators.hs
197    build-depends: base, QuickCheck
198    if !flag(templateHaskell)
199        Buildable: False
200
201Test-Suite test-quickcheck-gshrink
202    type: exitcode-stdio-1.0
203    Default-language: Haskell2010
204    hs-source-dirs: tests
205    main-is: GShrinkExample.hs
206    build-depends: base, QuickCheck
207    if !flag(templateHaskell) || !impl(ghc >= 7.2)
208        buildable: False
209    if impl(ghc >= 7.2) && impl(ghc < 7.6)
210        build-depends: ghc-prim
211
212Test-Suite test-quickcheck-terminal
213    type: exitcode-stdio-1.0
214    Default-language: Haskell2010
215    hs-source-dirs: tests
216    main-is: Terminal.hs
217    build-depends: base, process, deepseq >= 1.1.0.0, QuickCheck
218    if !flag(templateHaskell) || !impl(ghc >= 7.10)
219        buildable: False
220
221Test-Suite test-quickcheck-monadfix
222    type: exitcode-stdio-1.0
223    Default-language: Haskell2010
224    hs-source-dirs: tests
225    main-is: MonadFix.hs
226    build-depends: base, QuickCheck
227    if !flag(templateHaskell) || !impl(ghc >= 7.10)
228        buildable: False
229
230Test-Suite test-quickcheck-split
231    type: exitcode-stdio-1.0
232    Default-language: Haskell2010
233    hs-source-dirs: tests
234    main-is: Split.hs
235    build-depends: base, QuickCheck
236
237Test-Suite test-quickcheck-misc
238    type: exitcode-stdio-1.0
239    Default-language: Haskell2010
240    hs-source-dirs: tests
241    main-is: Misc.hs
242    build-depends: base, QuickCheck
243    if !flag(templateHaskell) || !impl(ghc >= 7.10)
244        buildable: False
245