packages feed

supply-next 0.0.1.0 → 0.0.1.1

raw patch · 3 files changed

+34/−7 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

changelog.md view
@@ -1,3 +1,7 @@+### 0.0.1.1 (2023-01-16)++Add more test cases+ ### 0.0.1.0 (2023-01-16)  Remove unnecessary `Monad` constraints from `Consumer` examples
supply-next.cabal view
@@ -1,7 +1,7 @@ cabal-version: 3.0  name: supply-next-version: 0.0.1.0+version: 0.0.1.1 category: Streaming synopsis: Supply-chain interface for basic streaming description:
test-supply-next/Main.hs view
@@ -4,14 +4,15 @@  import Control.Monad (replicateM) import Control.Monad.Trans.Writer.CPS (execWriter, tell, runWriter, Writer)+import Data.Char (Char) import Data.Function (on) import Data.Monoid (Sum (..)) import Data.Sequence (Seq) import Data.String (String)-import Next (each, ProducerPlus)-import Next.Stream (Stream (Stream))+import Integer (Positive)+import Next (each, ProducerPlus, Step (..), Stream (Stream), next) import Prelude (Integer, Int, IO, (+), show)-import SupplyChain ((>->), (>-), Job)+import SupplyChain ((>->), (>-), Job, order) import Test.Hspec (hspec, describe, it, shouldBe)  import qualified Data.Char as Char@@ -25,15 +26,37 @@ main :: IO () main = hspec $ describe "Next" do +    describe "Producer" do++        it "each" do+            let job = Next.each "abc" >- replicateM 4 (order next)+            Job.eval job `shouldBe` [Item 'a', Item 'b', Item 'c', End]+     describe "Pipe" do          let write :: Next.ConsumerPlus up (Writer (Seq item)) item ()             write = Next.foldEffect (Fold.effect (Seq.singleton >>> tell)) -        it "group" do+        describe "concat" do+            let takeN n input = Next.each input >-> Next.concat >- replicateM n (order next)+            it "1" do+                let job = takeN 5 ["a", "bc", "def", "ghij"]+                Job.eval job `shouldBe` [Item 'a', Item 'b', Item 'c', Item 'd', Item 'e']+            it "2" do+                let job = takeN 5 ["a", "bc"]+                Job.eval job `shouldBe` [Item 'a', Item 'b', Item 'c', End, End]++        describe "group" do             let input = "Hrmm..."; grouped = [(1, 'H'), (1, 'r'), (2, 'm'), (3, '.')]-                job = each input >-> Next.group >- write-            execWriter (Job.run job) `shouldBe` Seq.fromList grouped+            it "pure" do+                let job = Next.each "Hrmm..." >-> Next.group >- Next.toList+                Job.eval job `shouldBe` grouped+            it "effectful" do+                let job = each input >-> Next.group >- write+                execWriter (Job.run job) `shouldBe` Seq.fromList grouped+            it "empty" do+                let job = Next.empty >-> Next.group >- Next.toList+                shouldBe @[(Positive, Char)] (Job.eval job) []          it "takeWhile" do             let input = "PORKchOp"; capitalPrefix = "PORK"