packages feed

pipes-misc-0.2.0.0: test/Spec.hs

module Main where

import Control.Lens
import Data.Foldable
import qualified Pipes as P
import qualified Pipes.Misc as PM
import qualified Pipes.Prelude as PP
import Test.Hspec

data1 :: [Int]
data1 = [1, 2..9]

sig1 :: Monad m => P.Producer Int m ()
sig1 = traverse_ P.yield data1

main :: IO ()
main = do
  hspec $ do
      describe "Misc" $ do
          it "Buffered" $ do
              let xs = PP.toList (sig1 P.>-> PM.buffer 2 [])
              xs `shouldBe` (pure $ head data1) : ((\(a, b) -> [a, b]) <$> zip (tail data1) data1)

          it "Locally +10 to second" $ do
              let xs = PP.toList
                       (sig1
                        P.>-> PP.map (\a -> (a, a))
                        P.>-> PM.locally (view _2) (set _2) (PP.map (+ 10)))
              xs `shouldBe` zip data1 ((+ 10) <$> data1)