fake: Randomly generated fake data

[ bsd3, data, library ] [ Propose Tags ]

QuickCheck generates completely random data for the purposes of test and catching corner cases. The fake package provides tools for generating data that looks plausibly real.

[Skip to Readme]


Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS] 0.1, 0.1.1,,,, 0.1.2
Change log ChangeLog.md
Dependencies base (>=4.8 && <4.12), containers (>=0.5 && <0.6), generics-sop (>=0.2 && <0.4), random (>=1.1 && <1.2), text (>=1.2 && <1.3), time (>=1.4 && <1.10) [details]
License BSD-3-Clause
Copyright Doug Beardsley, Formation Inc.
Author Doug Beardsley
Maintainer mightybyte@gmail.com
Revised Revision 2 made by DougBeardsley at 2019-05-03T19:44:36Z
Category Data
Home page https://github.com/mightybyte/fake
Bug tracker https://github.com/mightybyte/fake/issues
Source repo head: git clone https://github.com/mightybyte/fake.git
Uploaded by DougBeardsley at 2018-04-25T16:36:02Z
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 3378 total (18 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-04-29 [all 1 reports]

Readme for fake-

[back to package description]


Build Status

Fake is a Haskell package for generating realistic-looking fake data.


The package has three main components:

  1. Analogs to QuickCheck's Arbitrary and Gen that use realistic probability distributions rather than the more uniform distributions used by QuickCheck.
  2. A generic coverage function that generates full constructor coverage over a data type.
  3. A suite of providers for common types of data such as names, addresses, phone numbers, ID numbers, etc.

Fake's gcover function is particularly useful with the armor package for ensuring that all constructors of your data types are tested for backwards compatible serializations without having to write all the values yourself. This allows you to get higher confidence that you have covered most of the important cases without the combinatorial explosion of exhaustive testing.


Original inspiration came from the production needs of Formation (previously Takt).

Providers and other details were inspired by similar packages in Python and Ruby.