-- Do not edit! Automatically created with doctest-extract from src/Data/Array/Comfort/Storable.hs {-# LINE 107 "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 108 "src/Data/Array/Comfort/Storable.hs" #-} import qualified Data.Array.Comfort.Construct as Construct import qualified Data.Array.Comfort.Storable as Array import qualified Data.Array.Comfort.Boxed as BoxedArray import qualified Data.Array.Comfort.Shape as Shape import Data.Array.Comfort.Storable (Array, (!)) import Data.Functor.Compose (Compose(Compose)) import qualified Test.QuickCheck as QC import Test.ChasingBottoms.IsBottom (isBottom) import Control.Applicative (liftA3, (<$>)) import qualified Data.IntSet as IntSet import qualified Data.Set as Set import Data.Complex (Complex((:+))) import Data.Word (Word8, Word16) type ShapeInt = Shape.ZeroBased Int type X = Shape.Element shapeInt :: Int -> ShapeInt shapeInt = Shape.ZeroBased 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:161: " {-# LINE 161 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example( {-# LINE 161 "src/Data/Array/Comfort/Storable.hs" #-} Array.fromList (shapeInt 5) ['a'..] ) [ExpectedLine [LineChunk "StorableArray.fromList (ZeroBased {zeroBasedSize = 5}) \"abcde\""]] DocTest.printPrefix "Data.Array.Comfort.Storable:180: " {-# LINE 180 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example( {-# LINE 180 "src/Data/Array/Comfort/Storable.hs" #-} Array.fromTuple ('a',('b','c')) :: 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:183: " {-# LINE 183 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example( {-# LINE 183 "src/Data/Array/Comfort/Storable.hs" #-} let arr :: Array (Shape.NestedTuple Shape.TupleAccessor (X,(X,X))) Char arr = Array.fromTuple ('a',('b','c')) in (arr ! fst, arr ! (fst.snd)) ) [ExpectedLine [LineChunk "('a','b')"]] DocTest.printPrefix "Data.Array.Comfort.Storable:206: " {-# LINE 206 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example( {-# LINE 206 "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:232: " {-# LINE 232 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example( {-# LINE 232 "src/Data/Array/Comfort/Storable.hs" #-} let arr = Array.fromContainer $ Compose [[3,1],[4,1,5,9,2,6,5],[3::Int]] in (Shape.size (Array.shape arr), arr!(1,2), Array.toContainer arr) ) [ExpectedLine [LineChunk "(10,5,Compose [[3,1],[4,1,5,9,2,6,5],[3]])"]] DocTest.printPrefix "Data.Array.Comfort.Storable:248: " {-# LINE 248 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example( {-# LINE 248 "src/Data/Array/Comfort/Storable.hs" #-} let arr :: Array (Shape.Constructed ()) Int ((lt,eq,gt), arr) = Array.fromConstruction $ liftA3 (,,) (Construct.element 3) (Construct.element 1) (Construct.element 4) squared = Array.map (^(2::Int)) arr in (squared!lt, squared!eq, squared!gt) ) [ExpectedLine [LineChunk "(9,1,16)"]] DocTest.printPrefix "Data.Array.Comfort.Storable:304: " {-# LINE 304 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property( {-# LINE 304 "src/Data/Array/Comfort/Storable.hs" #-} QC.forAll (QC.listOf genArray) $ \chunks -> let ensemble = BoxedArray.vectorFromList chunks in let concatenated = Array.fromBlockEnsemble ensemble in let _shape :: BoxedArray.Array ShapeInt ShapeInt _shape = Array.shape concatenated in ensemble == Array.toBlockEnsemble concatenated ) DocTest.printPrefix "Data.Array.Comfort.Storable:362: " {-# LINE 362 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example( {-# LINE 362 "src/Data/Array/Comfort/Storable.hs" #-} let arr :: Array (BoxedArray.Array (Shape.Enumeration Ordering) ShapeInt) Int arr = Array.fromList (BoxedArray.fromList Shape.static [shapeInt 2, shapeInt 7, shapeInt 1]) [3,1,4,1,5,9,2,6,5,3] in (Shape.size (Array.shape arr), [arr!(LT,0), arr!(LT,1), arr!(EQ,0), arr!(EQ,6), arr!(GT,0)]) ) [ExpectedLine [LineChunk "(10,[3,1,4,5,3])"]] DocTest.printPrefix "Data.Array.Comfort.Storable:426: " {-# LINE 426 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example( {-# LINE 426 "src/Data/Array/Comfort/Storable.hs" #-} Array.takeSet (Set.fromList [0,2,4,7,13]) (Array.vectorFromList [3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3::Word8]) ) [ExpectedLine [LineChunk "StorableArray",WildCardChunk,LineChunk " (",WildCardChunk,LineChunk " [0,2,4,7,13]) [3,4,5,6,7]"]] DocTest.printPrefix "Data.Array.Comfort.Storable:436: " {-# LINE 436 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.example( {-# LINE 436 "src/Data/Array/Comfort/Storable.hs" #-} Array.takeIntSet (IntSet.fromList [0,2,4,7,13]) (Array.vectorFromList [3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3::Word8]) ) [ExpectedLine [LineChunk "StorableArray",WildCardChunk,LineChunk " (",WildCardChunk,LineChunk " [0,2,4,7,13]) [3,4,5,6,7]"]] DocTest.printPrefix "Data.Array.Comfort.Storable:481: " {-# LINE 481 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property( {-# LINE 481 "src/Data/Array/Comfort/Storable.hs" #-} forAllNonEmpty $ \xs -> Array.minimum xs ==? minimum (Array.toList xs) ) DocTest.printPrefix "Data.Array.Comfort.Storable:489: " {-# LINE 489 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property( {-# LINE 489 "src/Data/Array/Comfort/Storable.hs" #-} forAllNonEmpty $ \xs -> Array.maximum xs ==? maximum (Array.toList xs) ) DocTest.printPrefix "Data.Array.Comfort.Storable:501: " {-# LINE 501 "src/Data/Array/Comfort/Storable.hs" #-} DocTest.property( {-# LINE 501 "src/Data/Array/Comfort/Storable.hs" #-} forAllNonEmpty $ \xs -> Array.limits xs ==? (Array.minimum xs, Array.maximum xs) )