packages feed

PrimitiveArray-0.8.0.0: tests/SmallCheck.hs

module SmallCheck where

import Control.Applicative
import Data.Bits
import Data.List (nub, sort, group, maximumBy)
import Data.Ord (comparing)
import Data.Word (Word)
import Debug.Trace
import Test.SmallCheck
import Test.Tasty
import Test.Tasty.SmallCheck
import Test.Tasty.TH

import Data.PrimitiveArray.Index.Class
import Data.PrimitiveArray.Index.EdgeBoundary
import Data.PrimitiveArray.Index.IOC
import Data.PrimitiveArray.Index.Point
import Data.PrimitiveArray.Index.Set
import Data.PrimitiveArray.Index.Subword

import Common



-- * Uniqueness tests. The @xs@ lists are fairly small.

prop_PointL_I_unique (xs :: [PointL I]) = uniquenessTest (pointLI 0) (maximum xs) xs

prop_Subword_I_unique (xs :: [Subword I]) = uniquenessTest (subword 0 0) (maximumBy (comparing fromSubwordSnd) xs) xs

prop_EdgeBoundary_I_unique (xs :: [EdgeBoundary I]) = uniquenessTest (0 :-> 0) (maximumBy (comparing fromEdgeBoundarySnd) xs) xs



smallcheck_tests = $(testGroupGenerator)