llvm-dsl-0.2.1: test/DocTest/LLVM/DSL/Expression/Vector.hs
-- Do not edit! Automatically created with doctest-extract from src/LLVM/DSL/Expression/Vector.hs
{-# LINE 20 "src/LLVM/DSL/Expression/Vector.hs" #-}
module DocTest.LLVM.DSL.Expression.Vector where
import Test.DocTest.Base
import qualified Test.DocTest.Driver as DocTest
{-# LINE 21 "src/LLVM/DSL/Expression/Vector.hs" #-}
import Test.LLVM.DSL.Run (sharedRun, run)
import qualified LLVM.DSL.Expression.Vector as Vector
import qualified LLVM.DSL.Expression as Expr
import qualified LLVM.Core as LLVM
import Type.Data.Num.Decimal (D4, D8)
import qualified Data.Traversable as Trav
import qualified Data.Foldable as Fold
import qualified Data.List as List
import qualified Data.NonEmpty as NonEmpty
import qualified Data.Tuple.HT as Tuple
import Control.Applicative (liftA2)
import Data.Int (Int32)
import Test.QuickCheck ((===))
type N = D8
type VectorN = LLVM.Vector N
test :: DocTest.T ()
test = do
DocTest.printPrefix "LLVM.DSL.Expression.Vector:109: "
{-# LINE 109 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.example(
{-# LINE 109 "src/LLVM/DSL/Expression/Vector.hs" #-}
run Vector.replicate 42 :: LLVM.Vector D4 Int32
)
[ExpectedLine [LineChunk "Vector [42,42,42,42]"]]
DocTest.printPrefix "LLVM.DSL.Expression.Vector:118: "
{-# LINE 118 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.example(
{-# LINE 118 "src/LLVM/DSL/Expression/Vector.hs" #-}
run (Expr.uncurry3 Vector.replicateSegmented) (LLVM.consVector False False True False False True False False, 8, LLVM.consVector 7 6 5 4 3 2 1 0) :: LLVM.Vector D8 Int32
)
[ExpectedLine [LineChunk "Vector [8,8,5,5,5,2,2,2]"]]
DocTest.printPrefix "LLVM.DSL.Expression.Vector:121: "
{-# LINE 121 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.property(
{-# LINE 121 "src/LLVM/DSL/Expression/Vector.hs" #-}
sharedRun (Expr.uncurry3 Vector.replicateSegmented) $ \replicateSegmented ->
\bs x xs ->
NonEmpty.tail
(NonEmpty.scanl (\lastX (b,xi) -> if b then xi else lastX)
x (liftA2 (,) bs xs))
===
replicateSegmented (bs, x, xs :: VectorN Int32)
)
DocTest.printPrefix "LLVM.DSL.Expression.Vector:138: "
{-# LINE 138 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.example(
{-# LINE 138 "src/LLVM/DSL/Expression/Vector.hs" #-}
run (Vector.iterate (6+)) 0 :: LLVM.Vector D8 Int32
)
[ExpectedLine [LineChunk "Vector [0,6,12,18,24,30,36,42]"]]
DocTest.printPrefix "LLVM.DSL.Expression.Vector:141: "
{-# LINE 141 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.property(
{-# LINE 141 "src/LLVM/DSL/Expression/Vector.hs" #-}
sharedRun (Expr.uncurry (\d -> Vector.iterate (d+))) $ \iter ->
\d x ->
List.take 8 (List.iterate (d+) x)
===
Fold.toList (iter (d,x) :: LLVM.Vector D8 Int32)
)
DocTest.printPrefix "LLVM.DSL.Expression.Vector:178: "
{-# LINE 178 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.example(
{-# LINE 178 "src/LLVM/DSL/Expression/Vector.hs" #-}
run (Expr.uncurry Vector.cumulateJoint) (3, LLVM.consVector 1 4 1 5 :: LLVM.Vector D4 Int32)
)
[ExpectedLine [LineChunk "(14,Vector [3,4,8,9])"]]
DocTest.printPrefix "LLVM.DSL.Expression.Vector:181: "
{-# LINE 181 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.property(
{-# LINE 181 "src/LLVM/DSL/Expression/Vector.hs" #-}
sharedRun (Expr.uncurry Vector.cumulateJoint) $ \cumulateJoint ->
\x xs ->
Tuple.swap (NonEmpty.viewR (NonEmpty.scanl (+) x xs))
===
cumulateJoint (x, xs :: VectorN Int32)
)
DocTest.printPrefix "LLVM.DSL.Expression.Vector:201: "
{-# LINE 201 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.example(
{-# LINE 201 "src/LLVM/DSL/Expression/Vector.hs" #-}
run Vector.cumulate1 (LLVM.consVector 3 1 4 1 :: LLVM.Vector D4 Int32)
)
[ExpectedLine [LineChunk "Vector [3,4,8,9]"]]
DocTest.printPrefix "LLVM.DSL.Expression.Vector:204: "
{-# LINE 204 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.example(
{-# LINE 204 "src/LLVM/DSL/Expression/Vector.hs" #-}
run Vector.cumulate1 (LLVM.consVector 3 1 4 1 5 9 2 6 :: LLVM.Vector D8 Int32)
)
[ExpectedLine [LineChunk "Vector [3,4,8,9,14,23,25,31]"]]
DocTest.printPrefix "LLVM.DSL.Expression.Vector:207: "
{-# LINE 207 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.example(
{-# LINE 207 "src/LLVM/DSL/Expression/Vector.hs" #-}
run Vector.cumulate1 (LLVM.consVector 0 0 1 0 0 (-1) 0 0 :: LLVM.Vector D8 Int32)
)
[ExpectedLine [LineChunk "Vector [0,0,1,1,1,0,0,0]"]]
DocTest.printPrefix "LLVM.DSL.Expression.Vector:210: "
{-# LINE 210 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.property(
{-# LINE 210 "src/LLVM/DSL/Expression/Vector.hs" #-}
sharedRun Vector.cumulate1 $ \cumulate1 ->
\x ->
scanl1 (+) (Fold.toList x)
===
Fold.toList (cumulate1 (x :: VectorN Int32))
)
DocTest.printPrefix "LLVM.DSL.Expression.Vector:218: "
{-# LINE 218 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.property(
{-# LINE 218 "src/LLVM/DSL/Expression/Vector.hs" #-}
sharedRun Vector.cumulate1 $ \cumulate1 ->
\x ->
NonEmpty.tail (NonEmpty.scanl (+) 0 x)
===
cumulate1 (x :: VectorN Int32)
)
DocTest.printPrefix "LLVM.DSL.Expression.Vector:242: "
{-# LINE 242 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.example(
{-# LINE 242 "src/LLVM/DSL/Expression/Vector.hs" #-}
run (Expr.uncurry3 Vector.cumulateSegmentedJoint) (LLVM.consVector False False True False False True False False, 3, LLVM.consVector 1 4 1 5 9 2 6 5) :: (Int32, LLVM.Vector D8 Int32)
)
[ExpectedLine [LineChunk "(13,Vector [3,4,0,1,6,0,2,8])"]]
DocTest.printPrefix "LLVM.DSL.Expression.Vector:245: "
{-# LINE 245 "src/LLVM/DSL/Expression/Vector.hs" #-}
DocTest.property(
{-# LINE 245 "src/LLVM/DSL/Expression/Vector.hs" #-}
sharedRun (Expr.uncurry3 Vector.cumulateSegmentedJoint) $
\cumulateSegmentedJoint ->
\bs x xs ->
Trav.mapAccumL
(\acc (b,xi) ->
let yi = if b then 0 else acc in (yi+xi, yi))
x (liftA2 (,) bs xs)
===
cumulateSegmentedJoint (bs, x, xs :: VectorN Int32)
)