feat: Pipes.Construct
This commit is contained in:
@@ -9,12 +9,14 @@ import Test.Pipes.Node.Stream as Test.Pipes.Node.Stream
|
||||
import Test.Pipes.Node.Buffer as Test.Pipes.Node.Buffer
|
||||
import Test.Pipes.Node.FS as Test.Pipes.Node.FS
|
||||
import Test.Pipes.Collect as Test.Pipes.Collect
|
||||
import Test.Pipes.Construct as Test.Pipes.Construct
|
||||
import Test.Spec.Reporter (specReporter)
|
||||
import Test.Spec.Runner (defaultConfig, runSpec')
|
||||
|
||||
main :: Effect Unit
|
||||
main = launchAff_ $ runSpec' (defaultConfig { failFast = true, timeout = Nothing }) [ specReporter ] do
|
||||
main = launchAff_ $ runSpec' (defaultConfig { exit = false, timeout = Nothing }) [ specReporter ] do
|
||||
Test.Pipes.Node.Stream.spec
|
||||
Test.Pipes.Node.Buffer.spec
|
||||
Test.Pipes.Node.FS.spec
|
||||
Test.Pipes.Collect.spec
|
||||
Test.Pipes.Construct.spec
|
||||
|
||||
58
test/Test/Pipes.Construct.purs
Normal file
58
test/Test/Pipes.Construct.purs
Normal file
@@ -0,0 +1,58 @@
|
||||
module Test.Pipes.Construct where
|
||||
|
||||
import Prelude
|
||||
|
||||
import Data.Array as Array
|
||||
import Data.List as List
|
||||
import Data.Map as Map
|
||||
import Data.Tuple.Nested (type (/\), (/\))
|
||||
import Effect.Class (liftEffect)
|
||||
import Pipes.Collect as Pipes.Collect
|
||||
import Pipes.Construct as Pipes.Construct
|
||||
import Test.Spec (Spec, describe, it)
|
||||
import Test.Spec.Assertions (shouldEqual)
|
||||
|
||||
spec :: Spec Unit
|
||||
spec =
|
||||
describe "Test.Pipes.Construct" do
|
||||
describe "eachMap" do
|
||||
it "empty map" do
|
||||
kvs <- Pipes.Collect.toArray $ Pipes.Construct.eachMap Map.empty
|
||||
kvs `shouldEqual` ([] :: Array (Int /\ Int))
|
||||
it "nonempty map" do
|
||||
let
|
||||
exp = (\n -> n /\ n) <$> Array.range 0 99999
|
||||
map = Map.fromFoldable exp
|
||||
kvs <-
|
||||
liftEffect
|
||||
$ Pipes.Collect.toArray
|
||||
$ Pipes.Construct.eachMap
|
||||
$ map
|
||||
kvs `shouldEqual` exp
|
||||
describe "eachArray" do
|
||||
it "empty array" do
|
||||
kvs <- Pipes.Collect.toArray $ Pipes.Construct.eachArray []
|
||||
kvs `shouldEqual` ([] :: Array Int)
|
||||
it "nonempty array" do
|
||||
let
|
||||
inp = (\n -> n /\ n) <$> Array.range 0 99999
|
||||
kvs <-
|
||||
liftEffect
|
||||
$ Pipes.Collect.toArray
|
||||
$ Pipes.Construct.eachArray
|
||||
$ inp
|
||||
kvs `shouldEqual` inp
|
||||
describe "eachList" do
|
||||
it "empty list" do
|
||||
kvs <- Pipes.Collect.toArray $ Pipes.Construct.eachList List.Nil
|
||||
kvs `shouldEqual` ([] :: Array Int)
|
||||
it "nonempty list" do
|
||||
let
|
||||
inp = (\n -> n /\ n) <$> Array.range 0 99999
|
||||
kvs <-
|
||||
liftEffect
|
||||
$ Pipes.Collect.toArray
|
||||
$ Pipes.Construct.eachList
|
||||
$ List.fromFoldable
|
||||
$ inp
|
||||
kvs `shouldEqual` inp
|
||||
@@ -34,7 +34,7 @@ spec = describe "Pipes.Node.FS" do
|
||||
s <- fold <$> Pipes.toListM (Pipes.Node.FS.read p >-> unEOS >-> Pipes.Node.Buffer.toString UTF8)
|
||||
s `shouldEqual` "foo"
|
||||
around tmpFile $ it "fails if the file already exists" \p -> do
|
||||
liftEffect $ FS.writeTextFile UTF8 "foo" p
|
||||
liftEffect $ FS.writeTextFile UTF8 p "foo"
|
||||
flip catchError (const $ pure unit) do
|
||||
Pipes.runEffect $ withEOS (yield "foo" >-> Pipes.Node.Buffer.fromString UTF8) >-> Pipes.Node.FS.create p
|
||||
fail "should have thrown"
|
||||
@@ -44,7 +44,7 @@ spec = describe "Pipes.Node.FS" do
|
||||
contents <- liftEffect $ FS.readTextFile UTF8 p
|
||||
contents `shouldEqual` "foo"
|
||||
around tmpFile $ it "fails if the file already exists" \p -> do
|
||||
liftEffect $ FS.writeTextFile UTF8 "foo" p
|
||||
liftEffect $ FS.writeTextFile UTF8 p "foo"
|
||||
flip catchError (const $ pure unit) do
|
||||
Pipes.runEffect $ withEOS (yield "foo" >-> Pipes.Node.Buffer.fromString UTF8) >-> Pipes.Node.FS.create p
|
||||
fail "should have thrown"
|
||||
|
||||
Reference in New Issue
Block a user