-- Do not edit! Automatically created with doctest-extract from src/Data/Array/Comfort/Storable.hs {-# LINE 86 "src/Data/Array/Comfort/Storable.hs" #-} module DocTest.Data.Array.Comfort.Storable where import Test.DocTest.Base import qualified Test.DocTest.Driver as DocTest {-# LINE 87 "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.Complex (Complex((:+))) 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 type X = Shape.Element test :: DocTest.T () test = do DocTest.printPrefix "Data.Array.Comfort.Storable:151: " {-# LINE 151 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example {-# LINE 151 "src/Data/Array/Comfort/Storable.hs" #-} (Array.fromList (Shape.ZeroBased (5::Int)) ['a'..]) [ExpectedLine [LineChunk "StorableArray.fromList (ZeroBased {zeroBasedSize = 5}) \"abcde\""]] DocTest.printPrefix "Data.Array.Comfort.Storable:164: " {-# LINE 164 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example {-# LINE 164 "src/Data/Array/Comfort/Storable.hs" #-} (Array.fromTuple ('a',('b','c')) :: Array.Array (Shape.NestedTuple Shape.TupleIndex (X,(X,X))) Char) [ExpectedLine [LineChunk "StorableArray.fromList (NestedTuple {getNestedTuple = (Element 0,(Element 1,Element 2))}) \"abc\""]] DocTest.printPrefix "Data.Array.Comfort.Storable:167: " {-# LINE 167 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example {-# LINE 167 "src/Data/Array/Comfort/Storable.hs" #-} ( let arr = Array.fromTuple ('a',('b','c')) :: Array.Array (Shape.NestedTuple Shape.TupleAccessor (X,(X,X))) Char in (arr ! fst, arr ! (fst.snd)) ) [ExpectedLine [LineChunk "('a','b')"]] DocTest.printPrefix "Data.Array.Comfort.Storable:188: " {-# LINE 188 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example {-# LINE 188 "src/Data/Array/Comfort/Storable.hs" #-} ( let arr = Array.fromRecord ('a' :+ 'b') in let (real:+imag) = Shape.indexRecordFromShape $ Array.shape arr in (arr ! real, arr ! imag) ) [ExpectedLine [LineChunk "('a','b')"]] DocTest.printPrefix "Data.Array.Comfort.Storable:303: " {-# LINE 303 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property {-# LINE 303 "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:321: " {-# LINE 321 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property {-# LINE 321 "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:338: " {-# LINE 338 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property {-# LINE 338 "src/Data/Array/Comfort/Storable.hs" #-} (forAllNonEmpty $ \xs -> Array.minimum xs ==? minimum (Array.toList xs)) DocTest.printPrefix "Data.Array.Comfort.Storable:346: " {-# LINE 346 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property {-# LINE 346 "src/Data/Array/Comfort/Storable.hs" #-} (forAllNonEmpty $ \xs -> Array.maximum xs ==? maximum (Array.toList xs)) DocTest.printPrefix "Data.Array.Comfort.Storable:358: " {-# LINE 358 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property {-# LINE 358 "src/Data/Array/Comfort/Storable.hs" #-} (forAllNonEmpty $ \xs -> Array.limits xs ==? (Array.minimum xs, Array.maximum xs))