packages feed

llvm-extra-0.13.1: test/DocTest/LLVM/Extra/Nice/Value/Vector.hs

-- Do not edit! Automatically created with doctest-extract from src/LLVM/Extra/Nice/Value/Vector.hs
{-# LINE 52 "src/LLVM/Extra/Nice/Value/Vector.hs" #-}

module DocTest.LLVM.Extra.Nice.Value.Vector where

import Test.DocTest.Base
import qualified Test.DocTest.Driver as DocTest

{-# LINE 53 "src/LLVM/Extra/Nice/Value/Vector.hs" #-}
import     Test.RunNice (sharedRun, run)
import     qualified LLVM.Extra.Nice.Value.Vector as Vector
import     qualified LLVM.Extra.Nice.Value as NV
import     qualified LLVM.Core as LLVM
import     Type.Data.Num.Decimal (D4, D8)
import     qualified Data.Foldable as Fold
import     qualified Data.List as List
import     qualified Data.NonEmpty as NonEmpty
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.Extra.Nice.Value.Vector:149: "
{-# LINE 149 "src/LLVM/Extra/Nice/Value/Vector.hs" #-}
 DocTest.example(
{-# LINE 149 "src/LLVM/Extra/Nice/Value/Vector.hs" #-}
    run Vector.replicate 42 :: LLVM.Vector D4 Int32
  )
  [ExpectedLine [LineChunk "Vector [42,42,42,42]"]]
 DocTest.printPrefix "LLVM.Extra.Nice.Value.Vector:158: "
{-# LINE 158 "src/LLVM/Extra/Nice/Value/Vector.hs" #-}
 DocTest.example(
{-# LINE 158 "src/LLVM/Extra/Nice/Value/Vector.hs" #-}
    run (NV.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.Extra.Nice.Value.Vector:161: "
{-# LINE 161 "src/LLVM/Extra/Nice/Value/Vector.hs" #-}
 DocTest.property(
{-# LINE 161 "src/LLVM/Extra/Nice/Value/Vector.hs" #-}
        
   sharedRun (NV.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.Extra.Nice.Value.Vector:179: "
{-# LINE 179 "src/LLVM/Extra/Nice/Value/Vector.hs" #-}
 DocTest.property(
{-# LINE 179 "src/LLVM/Extra/Nice/Value/Vector.hs" #-}
        
   sharedRun (NV.uncurry (\d -> Vector.iterate (NV.add d))) $ \iter ->
   \d x ->
      List.take 8 (List.iterate (d+) x)
      ===
      Fold.toList (iter (d,x) :: LLVM.Vector D8 Int32)
  )