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