packages feed

comfort-array-0.5.4: test/DocTest/Data/Array/Comfort/Boxed.hs

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

module DocTest.Data.Array.Comfort.Boxed where

import qualified Test.DocTest.Driver as DocTest

{-# LINE 63 "src/Data/Array/Comfort/Boxed.hs" #-}
import     qualified Data.Array.Comfort.Boxed as Array
import     qualified Data.Array.Comfort.Shape as Shape
import     Data.Array.Comfort.Boxed (Array, (!))

import     qualified Test.QuickCheck as QC

type     ShapeInt = Shape.ZeroBased Int

genArray2     :: QC.Gen (Array (ShapeInt,ShapeInt) Char)
genArray2     = do
       xs <- QC.arbitrary
       let n = length xs
       (k,m) <-
          if n == 0
             then QC.elements [(,) 0, flip (,) 0] <*> QC.choose (1,20)
             else fmap (\m -> (div n m, m)) $ QC.choose (1,n)
       return $
          Array.fromList (Shape.ZeroBased k, Shape.ZeroBased m) $ take (k*m) xs

test :: DocTest.T ()
test = do
 DocTest.printPrefix "Data.Array.Comfort.Boxed:201: "
{-# LINE 201 "src/Data/Array/Comfort/Boxed.hs" #-}
 DocTest.property(
{-# LINE 201 "src/Data/Array/Comfort/Boxed.hs" #-}
        
   QC.forAll genArray2 $ \xs ->
   let shape = Array.shape xs in
   Shape.size shape > 0   QC.==>
   QC.forAll (QC.elements $ Shape.indices shape) $ \(ix0,ix1) ->
      Array.pick xs ix0 ! ix1 == xs!(ix0,ix1)
  )