machinecell 1.3.0 → 1.3.1
raw patch · 3 files changed
+63/−4 lines, 3 files
Files
- CHANGELOG.md +6/−1
- machinecell.cabal +3/−3
- test/LoopUtil.hs +54/−0
CHANGELOG.md view
@@ -1,3 +1,8 @@++1.3.1+------------+* (Fix test suite of 1.3.0)+ 1.3.0 ------------ * Support of `ArrowState`.@@ -21,7 +26,7 @@ * Added `feedback` * Fixed `accum` -1.0,1+1.0.1 ------------ * Fix some bugs of core part. * Added `onEnd`.
machinecell.cabal view
@@ -1,5 +1,5 @@ name: machinecell-version: 1.3.0+version: 1.3.1 synopsis: Arrow based stream transducers license: BSD3 license-file: LICENSE@@ -33,7 +33,7 @@ default-language: Haskell2010 hs-source-dirs: test main-is: spec.hs- other-modules: RandomProc+ other-modules: RandomProc, LoopUtil Build-depends: base >=4.0 && <5.0, mtl >=2.0.1.1, profunctors >=4.0, QuickCheck >=1.0, hspec >=0.2.0, machinecell -any source-repository head@@ -44,4 +44,4 @@ source-repository this type: git location: https://github.com/as-capabl/machinecell.git- tag: release-1.3.0+ tag: release-1.3.1
+ test/LoopUtil.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE Arrows #-}++module+ LoopUtil+where++import Data.Functor+import Control.Arrow+import Test.Hspec++import Control.Category ((>>>))++import Control.Arrow.Machine as P+import Control.Monad.Trans (liftIO)+import qualified Control.Arrow.Machine.Misc.Pump as Pump++doubler = arr (fmap $ \x -> [x, x]) >>> P.fork++loopUtil =+ do+ describe "cycleDelay" $+ do+ it "can refer a recent value at downstream." $+ do+ let + pa :: ProcessA (Kleisli IO) (Event Int) (Event Int)+ pa = proc evx ->+ do+ rec+ y <- P.cycleDelay -< r2+ anytime (Kleisli putStr) -< "" <$ evx -- side effect+ evx2 <- doubler -< evx+ r2 <- P.accum 0 -< (+) <$> evx2+ returnA -< y <$ evx+ ret <- liftIO $ runKleisli (P.run pa) [1, 2, 3]+ ret `shouldBe` [0, 1+1, 1+1+2+2]+ describe "Pump" $+ do+ it "pumps up an event stream." $+ do+ let+ pa :: ProcessA (Kleisli IO) (Event Int) (Event Int)+ pa = proc evx ->+ do+ rec+ evOut <- Pump.outlet -< (dct, () <$ evx)+ anytime (Kleisli putStr) -< "" <$ evx -- side effect+ so <- doubler -< evx+ dct <- Pump.intake -< (so, () <$ evx)+ returnA -< evOut++ ret <- liftIO $ runKleisli (P.run pa) [4, 5, 6]+ ret `shouldBe` [4, 4, 5, 5, 6, 6]+