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