packages feed

comfort-array-0.4.1: test/DocTest/Data/Array/Comfort/Storable.hs

-- Do not edit! Automatically created with doctest-extract from src/Data/Array/Comfort/Storable.hs
{-# LINE 73 "src/Data/Array/Comfort/Storable.hs" #-}

module DocTest.Data.Array.Comfort.Storable where

import qualified Test.DocTest.Driver as DocTest

{-# LINE 74 "src/Data/Array/Comfort/Storable.hs" #-}
import     qualified Data.Array.Comfort.Storable as Array
import     qualified Data.Array.Comfort.Shape as Shape
import     Data.Array.Comfort.Storable (Array)

import     qualified Test.QuickCheck as QC
import     Test.ChasingBottoms.IsBottom (isBottom)

import     Control.Applicative ((<$>))

import     Data.Word (Word16)

type     ShapeInt = Shape.ZeroBased Int

genArray     :: QC.Gen (Array ShapeInt Word16)
genArray     = Array.vectorFromList <$> QC.arbitrary

infix     4 ==?
(==?)     :: a -> a -> (a,a)
(==?)     = (,)

forAllNonEmpty     :: (Eq b) => (Array ShapeInt Word16 -> (b,b)) -> QC.Property
forAllNonEmpty     f =
       QC.forAll genArray $ \xs ->
       case f xs of
          (resultArray,resultList) ->
             if Array.shape xs == Shape.ZeroBased 0
                then isBottom resultArray
                else resultArray == resultList

test :: DocTest.T ()
test = do
 DocTest.printPrefix "Data.Array.Comfort.Storable:194: "
{-# LINE 194 "src/Data/Array/Comfort/Storable.hs" #-}
 DocTest.property
{-# LINE 194 "src/Data/Array/Comfort/Storable.hs" #-}
     (forAllNonEmpty $ \xs -> Array.minimum xs ==? minimum (Array.toList xs))
 DocTest.printPrefix "Data.Array.Comfort.Storable:202: "
{-# LINE 202 "src/Data/Array/Comfort/Storable.hs" #-}
 DocTest.property
{-# LINE 202 "src/Data/Array/Comfort/Storable.hs" #-}
     (forAllNonEmpty $ \xs -> Array.maximum xs ==? maximum (Array.toList xs))
 DocTest.printPrefix "Data.Array.Comfort.Storable:214: "
{-# LINE 214 "src/Data/Array/Comfort/Storable.hs" #-}
 DocTest.property
{-# LINE 214 "src/Data/Array/Comfort/Storable.hs" #-}
     (forAllNonEmpty $ \xs -> Array.limits xs ==? (Array.minimum xs, Array.maximum xs))