@@ -3,12 +3,12 @@ module Test.Main where
3
3
import Prelude
4
4
5
5
import Data.Either (Either (..))
6
- import Data.Maybe (Maybe (..), fromJust , isNothing , isJust )
6
+ import Data.Maybe (Maybe (..), fromJust , isJust , isNothing )
7
7
import Effect (Effect )
8
8
import Effect.Console (log )
9
9
import Node.Buffer as Buffer
10
10
import Node.Encoding (Encoding (..))
11
- import Node.Stream (Duplex , Readable , Writable , onDataString , end , writeString , pipe , onDataEither , onData , setEncoding , setDefaultEncoding , read , onReadable , readString )
11
+ import Node.Stream (Duplex , Readable , Writable , destroy , end , onData , onDataEither , onDataString , onError , onReadable , pipe , read , readString , setDefaultEncoding , setEncoding , writeString )
12
12
import Partial.Unsafe (unsafePartial )
13
13
import Test.Assert (assert , assert' )
14
14
@@ -39,6 +39,12 @@ main = do
39
39
log " test pipe"
40
40
_ <- testPipe
41
41
42
+ log " test write"
43
+ testWrite
44
+
45
+ log " test end"
46
+ testEnd
47
+
42
48
log " test manual reads"
43
49
testReads
44
50
@@ -129,7 +135,7 @@ testPipe = do
129
135
_ <- unzip `pipe` sOut
130
136
131
137
writeString sIn UTF8 testString \_ -> do
132
- end sIn do
138
+ end sIn \_ -> do
133
139
onDataString sOut UTF8 \str -> do
134
140
assertEqual str testString
135
141
@@ -140,3 +146,42 @@ foreign import createGunzip :: Effect Duplex
140
146
141
147
-- | Create a PassThrough stream, which simply writes its input to its output.
142
148
foreign import passThrough :: Effect Duplex
149
+
150
+ testWrite :: Effect Unit
151
+ testWrite = do
152
+ hasError
153
+ noError
154
+ where
155
+ hasError = do
156
+ w1 <- writableStreamBuffer
157
+ _ <- onError w1 (const $ pure unit)
158
+ void $ end w1 $ const $ pure unit
159
+ void $ writeString w1 UTF8 " msg" \err -> do
160
+ assert' " writeString - should have error" $ isJust err
161
+
162
+ noError = do
163
+ w1 <- writableStreamBuffer
164
+ _ <- onError w1 (const $ pure unit)
165
+ void $ writeString w1 UTF8 " msg1" \err -> do
166
+ assert' " writeString - should have no error" $ isNothing err
167
+ void $ end w1 (const $ pure unit)
168
+
169
+ testEnd :: Effect Unit
170
+ testEnd = do
171
+ hasError
172
+ noError
173
+ where
174
+ hasError = do
175
+ w1 <- writableStreamBuffer
176
+ _ <- onError w1 (const $ pure unit)
177
+ void $ writeString w1 UTF8 " msg" \_ -> do
178
+ _ <- destroy w1
179
+ end w1 \err -> do
180
+ assert' " end - should have error" $ isJust err
181
+
182
+ noError = do
183
+ w1 <- writableStreamBuffer
184
+ _ <- onError w1 (const $ pure unit)
185
+ void $ writeString w1 UTF8 " msg" \_ -> do
186
+ end w1 \err -> do
187
+ assert' " end - should have no error" $ isNothing err
0 commit comments