packages feed

Earley-0.12.0.0: tests/Arbitrary.hs

{-# LANGUAGE RankNTypes #-}
module Arbitrary where

import qualified Test.QuickCheck as QC

import Text.Earley.Generator

-- | Generate an arbitrary member generated by a 'Generator'.
arbitrary :: Generator t a -> QC.Gen (a, [t])
arbitrary gen = QC.sized $ \n -> QC.elements (take (1 `max` n) xs)
  where
    xs = language gen