-- Do not edit! Automatically created with doctest-extract from src/Data/Array/Comfort/Storable.hs {-# LINE 83 "src/Data/Array/Comfort/Storable.hs" #-} module DocTest.Data.Array.Comfort.Storable where import qualified Test.DocTest.Driver as DocTest {-# LINE 84 "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 genArray2 :: QC.Gen (Array (ShapeInt,ShapeInt) Word16) genArray2 = do xs <- QC.arbitrary let n = length xs (k,m) <- if n == 0 then QC.elements [(,) 0, flip (,) 0] <*> QC.choose (1,n) else fmap (\m -> (div n m, m)) $ QC.choose (1,n) return $ Array.fromList (Shape.ZeroBased k, Shape.ZeroBased m) xs genNonEmptyArray2 :: QC.Gen (Array (ShapeInt,ShapeInt) Word16) genNonEmptyArray2 = do xs <- QC.getNonEmpty <$> QC.arbitrary let n = length xs m <- QC.choose (1,n) return $ Array.fromList (Shape.ZeroBased (div n m), Shape.ZeroBased m) xs 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:243: " {-# LINE 243 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property {-# LINE 243 "src/Data/Array/Comfort/Storable.hs" #-} (QC.forAll genNonEmptyArray2 $ \xs -> QC.forAll (QC.elements $ Shape.indices $ Array.shape xs) $ \(ix0,ix1) -> Array.pick xs ix0 ! ix1 == xs!(ix0,ix1)) DocTest.printPrefix "Data.Array.Comfort.Storable:261: " {-# LINE 261 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property {-# LINE 261 "src/Data/Array/Comfort/Storable.hs" #-} (QC.forAll genArray2 $ \xs -> xs == Array.fromRowArray (snd $ Array.shape xs) (Array.toRowArray xs)) DocTest.printPrefix "Data.Array.Comfort.Storable:278: " {-# LINE 278 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property {-# LINE 278 "src/Data/Array/Comfort/Storable.hs" #-} (forAllNonEmpty $ \xs -> Array.minimum xs ==? minimum (Array.toList xs)) DocTest.printPrefix "Data.Array.Comfort.Storable:286: " {-# LINE 286 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property {-# LINE 286 "src/Data/Array/Comfort/Storable.hs" #-} (forAllNonEmpty $ \xs -> Array.maximum xs ==? maximum (Array.toList xs)) DocTest.printPrefix "Data.Array.Comfort.Storable:298: " {-# LINE 298 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property {-# LINE 298 "src/Data/Array/Comfort/Storable.hs" #-} (forAllNonEmpty $ \xs -> Array.limits xs ==? (Array.minimum xs, Array.maximum xs))